Kap*_*old 48 unit-testing ruby-on-rails
我有一个模型从解析器对象获取其数据.我认为解析器类应该存在于lib /目录中(尽管我可以说服它应该存在于其他地方).问题是:我的单元应该在哪里测试解析器类?每次运行rake测试时,如何确保它们运行?
Mat*_*ley 26
在我正在研究的Rails应用程序中,我决定将测试放在test\unit目录中.我也将按模块/目录嵌套它们,例如:
lib/a.rb => test/unit/a_test.rb
lib/b/c.rb => test/unit/b/c_test.rb
Run Code Online (Sandbox Code Playgroud)
对我来说,这是最后阻力的路径,因为这些测试无需进行任何其他更改.
Pau*_*rey 23
这是一种方式:
lib/tasks/test_lib_dir.rake使用以下内容创建
namespace :test do
desc "Test lib source"
Rake::TestTask.new(:lib) do |t|
t.libs << "test"
t.pattern = 'test/lib/**/*_test.rb'
t.verbose = true
end
end
Run Code Online (Sandbox Code Playgroud)
模仿libdir下testdir 的结构,用相应的测试替换lib代码.
运行rake test:lib以运行lib测试.
如果要在调用时运行所有测试rake test,可以将以下内容添加到新的rake文件中.
lib_task = Rake::Task["test:lib"]
test_task = Rake::Task[:test]
test_task.enhance { lib_task.invoke }
Run Code Online (Sandbox Code Playgroud)
小智 8
我希望做同样的事情,但是使用rspec和autospec,需要花一些时间来弄清楚他们在哪里获得了目录/文件模式的列表,这些模式决定了要运行哪些测试文件.最终我在lib/tasks/rspec.rake中找到了这个:86
[:models, :controllers, :views, :helpers, :lib, :integration].each do |sub|
desc "Run the code examples in spec/#{sub}"
Spec::Rake::SpecTask.new(sub => spec_prereq) do |t|
t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
t.spec_files = FileList["spec/#{sub}/**/*_spec.rb"]
end
end
Run Code Online (Sandbox Code Playgroud)
当rpsec.rake文件配置为查看spec/lib时,我已将测试放在新的spec/libs目录中.只需重命名libs - > lib就可以了!
| 归档时间: |
|
| 查看次数: |
13557 次 |
| 最近记录: |