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
2条答案
按热度按时间hk8txs481#
我不得不反驳Chris关于它们是替代品的回答。我在Rails应用程序中一起使用Shoulda和Rspec,它们可以很好地互补。
这个组合让我可以编写简洁的一行单元测试,用于重复的事情,比如关联和验证,以及拥有完整的rspec套件用于更复杂的规范。你可以在没有任何冲突的情况下获得两个世界的最佳效果。
看看Shoulda README,它展示了如何在沿着安装Rspec。它甚至说它提供了“Test::Unit和Rspec兼容的一行程序来测试常见的Rails功能。否则这些测试会更长,更复杂,更容易出错。”
编辑(示例):
在我的规范的顶部,我总是声明我的类关系和验证测试,它们简洁易读。
字符串
然后我的规范的其余部分将有更复杂的测试,我使用来自Rspec的mock和stub。
iezvtpos2#
rspec和shoulda是彼此的替代品。我也是从shoulda开始的,然后转移到rspec就像
s/context/describe/
,s/should/it/
一样简单,你就可以开始比赛了。rspec有一堆技巧,各种集成,和更复杂的匹配器,所以我自己这些天也在使用它。我最初的一个挫折是,几乎不可能找到一个不假设Rails和Cucumber的教程。不要想太多-你可以用它做很多事情,但你不必在使用它之前就有一个怪物的解决方案。