我有一个基于别人工作的Rails3应用程序。由于某种原因,他们决定不为应用程序提供测试,这让我感到沮丧。
我想要做的是为所有现有的控制器和模型生成测试框架,以便于我在test::unit中可以更容易地创建测试。我不想重新创建模型或控制器,只是想要创建测试。
我对Rails不熟悉,并且已经搜索了可以做到这一点的rake命令,但迄今为止都没有找到。非常感谢任何建议/指导。
我有一个基于别人工作的Rails3应用程序。由于某种原因,他们决定不为应用程序提供测试,这让我感到沮丧。
我想要做的是为所有现有的控制器和模型生成测试框架,以便于我在test::unit中可以更容易地创建测试。我不想重新创建模型或控制器,只是想要创建测试。
我对Rails不熟悉,并且已经搜索了可以做到这一点的rake命令,但迄今为止都没有找到。非常感谢任何建议/指导。
我知道这有点老了,但你可以这样做:
rails g scaffold Post -s
-s
选项使其跳过已创建的文件。如果您不使用该标志,它只会询问您是否要覆盖文件,所以不用担心。
为了仅为现有的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
?因为它可能会生成我没有使用的视图。
我不知道有什么方法可以做到这一点。但是,创建一个临时的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版本允许您使用跳过选项仅生成缺失的文件。
test_helper.rb
文件丢失了。 - ericnrspec --init
来生成它。 - alex