【问题标题】:Generate only tests from existing model / controllers仅从现有模型/控制器生成测试
【发布时间】:2011-05-20 21:56:51
【问题描述】:

我有一个基于其他人工作的 Rails3 应用程序。出于某种原因,他们决定不随应用提供测试,这让我感到沮丧。

我想要做的是为所有现有的控制器和模型搭建测试框架,这样我就可以在 test::unit 中自己创建测试了。我不想重新创建模型或控制器,只需创建测试即可。

我是 Rails 的新手,并且一直在寻找可能执行此操作的 rake 命令,但到目前为止都没有运气。非常感谢任何建议/方向。

【问题讨论】:

    标签: ruby-on-rails testing ruby-on-rails-3 rake


    【解决方案1】:

    我知道它有点旧,但你可以这样做:

    rails g scaffold Post -s
    

    -s 使其跳过已创建的文件。此外,如果您不使用该标志,它只会询问您是否要覆盖该文件,所以,不用担心。

    【讨论】:

    • 您可能还想使用 --skip-migrations。
    • 谢谢,这几乎是完美的,但test_helper.rb 不见了
    • 你需要运行 rspec --init 来生成那个。
    【解决方案2】:

    据我所知,没有办法做到这一点。虽然创建一个临时的 Rails 项目并为所有模型生成脚手架然后将生成的测试目录复制到实际项目中,但这将非常容易。

    rails new temporary
    cd temporary
    rails g scaffold Post title:string body:text
    rails g scaffold Comment post:references author:string body:text
    cp -r test ../real_rails_app/
    

    等等

    这个答案现在已经过时了。最新的 Rails 版本允许您使用跳过选项仅生成丢失的文件。

    【讨论】:

    • 同意,遇到同样的情况,尝试了我能在谷歌上搜索到的所有建议,只有这一条真正有帮助
    【解决方案3】:

    为了只为现有的 Rails 3 应用程序生成关联的测试文件,我使用“生成资源”但跳过了我不想要的所有内容:

    rails g resource Post --skip --no-resource-route --no-migration --no-helper --no-assets
    

    可以使用rails generate resource --help找到其他选项

    -s, [--skip]     # Skip files that already exist
    --resource-route            # Indicates when to generate resource route
    [--helper]                # Indicates when to generate helper
    [--assets]                # Indicates when to generate assets
    [--migration]            # Indicates when to generate migration
    

    为什么不使用generate scaffold?因为它可能会生成我没有使用的视图。

    【讨论】:

      猜你喜欢
      • 2012-01-15
      • 1970-01-01
      • 1970-01-01
      • 2012-12-25
      • 2015-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多