rspec和shoulda – 补充还是替代?
我已经使用了一段时间了,我已经阅读并使用了rspec。 我还没有深入比较和对比。 但在我看来,两者之间存在一些重叠,但它们不是1-1的替代品。
我正在考虑使用rspec在我的rails系统中编写一些unit testing,而不是替换用shoulda编写的所有现有测试。 就像一种获得感觉的方式。
这是一个好主意吗? 我可以逐渐从一个移动到另一个,还是我在寻找麻烦?
我应该考虑一个明显的优势吗?
谢谢!
我不得不反对克里斯的答案,他们是替代品。 我在我的Rails应用程序中一起使用Shoulda和Rspec,它们相互补充。
这个组合允许我为重复的事情(如关联和validation)编写简明的单行unit testing,以及为更复杂的规范提供完整的rspec套件。 你可以在没有任何冲突的情况下获得两全其美。
查看Shoulda README ,其中显示了如何沿着Rspec安装。 它甚至表示它提供了“Test :: Unit-和RSpec兼容的单行程序来测试常见的Railsfunction。这些测试会更长,更复杂,更容易出错。”
编辑(示例):
在我的规范的顶部,我总是声明我的类关系和validation测试,这些测试简洁易读。
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
然后我的其他规范将有更复杂的测试,我使用来自Rspec的模拟和存根。
rspec和shoulda是彼此的替代品。 我也开始使用shoulda,然后转向rspec就像s/context/describe/
, s/should/it/
一样简单,你就可以参加比赛了。 rspec有一堆技巧,各种集成和更复杂的匹配器,所以我自己现在使用它更多。
我最初的挫折之一是,几乎不可能找到一个不承担Rails和Cucumber的教程。 不要过度思考它 – 你可以用它来做很多事情,但是在使用之前你不必拥有一个解决方案的怪物。
- ruby 2.1 rails 4个太阳黑子solr测试在套件中失败但是单独通过
- 检查RSpec中的ActiveRecord关联
- 在RSpec中是否存在与Cucumber的“情景”相同或者我使用RSpec的错误方式?
- 运行规范时出现的描述性错误,取决于种子
- zeus rspec失败包括必需的文件,但单独的rspec就可以了
- “Rake spec”在大多数测试中失败,但“rails s”在Diaspora源上工作正常
- 缺少必需的参数:aws_access_key_id,aws_secret_access_key
- 尝试使用RSpec测试OmniAuth时出现“禁用真实HTTP连接”错误
- 按特定顺序运行RSpec任务