pit*_*las 8 ruby rspec ruby-on-rails shoulda
我已经使用了一段时间了,我已经阅读并使用了rspec.我还没有深入比较和对比.但在我看来,两者之间存在一些重叠,但它们不是1-1的替代品.
我正在考虑使用rspec在我的rails系统中编写一些单元测试,而不是替换用shoulda编写的所有现有测试.就像一种获得感觉的方式.
这是一个好主意吗?我可以逐渐从一个移动到另一个,还是我在寻找麻烦?
我应该考虑一个明显的优势吗?
谢谢!
Pet*_*own 13
我不得不反对克里斯的答案,他们是替代品.我在我的Rails应用程序中一起使用Shoulda和Rspec,它们相互补充.
这个组合允许我为重复的事情(如关联和验证)编写简明的单行单元测试,以及为更复杂的规范提供完整的rspec套件.你可以在没有任何冲突的情况下获得两全其美.
查看Shoulda README,其中显示了如何沿着Rspec安装.它甚至表示它提供了"Test :: Unit-和RSpec兼容的单行程序来测试常见的Rails功能.否则这些测试会更长,更复杂,并且容易出错."
编辑(示例):
在我的规范的顶部,我总是声明我的类关系和验证测试,这些测试简洁易读.
describe Component do
context 'relationships' do
it { should belong_to(:technology)}
it { should have_many(:system_components) }
it { should have_and_belong_to_many(:variables) }
it { should have_many(:images).dependent(:destroy) }
it { should have_many(:documents).dependent(:destroy) }
end
context 'validations' do
it { should validate_presence_of(:make) }
it { should validate_presence_of(:model) }
it { should ensure_length_of(:name).is_at_most(100) }
it { should validate_presence_of(:technology_id) }
end
end
Run Code Online (Sandbox Code Playgroud)
然后我的其他规范将有更复杂的测试,我使用来自Rspec的模拟和存根.