仅生成现有模型/控制器的测试

时间:2010-12-06 10:42:19

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

我有一个基于别人工作的Rails3应用程序。出于某种原因,他们决定不提供应用程序的测试,我觉得很沮丧。

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

我是Rails的新手,并且一直在寻找可能会这样做的rake命令,但到目前为止一切都没有运气。任何建议/方向最受赞赏。

3 个答案:

答案 0 :(得分:18)

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

rails g scaffold Post -s

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

答案 1 :(得分:15)

要仅为现有的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?因为它可能会生成我没有使用的视图。

答案 2 :(得分:0)

我知道没有办法做到这一点。只需创建一个临时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版本允许您使用skip选项仅生成缺少的文件。