rspec 和 Shoulda - 互补还是替代?

2023-11-24

我已经使用shoulda有一段时间了,并且我已经阅读并使用了rspec。我没有做过深入的比较和对比。但在我看来,两者之间有一些重叠,但它们并不是一对一的替代。

我正在考虑使用 rspec 在我的 Rails 系统中编写一些单元测试,而不替换用 Shoulda 编写的所有现有测试。只是作为一种获得感觉的方式。

这是一个好主意吗?我可以逐渐从一种转向另一种吗?或者我是在自找麻烦吗?

我应该考虑其中一种相对于另一种的明显优势吗?

Thanks!


我不得不反驳克里斯关于它们是替代品的回答。我在 Rails 应用程序中同时使用 Shoulda 和 Rspec,它们相得益彰。

这个组合允许我为关联和验证等重复出现的事情编写简洁的单行单元测试,以及为更复杂的规范提供完整的 rspec 套件。您可以在没有任何冲突的情况下获得两全其美。

查看应该自述文件它展示了如何与 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

然后我的规范的其余部分将有更复杂的测试,我使用来自 Rspec 的模拟和存根。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

rspec 和 Shoulda - 互补还是替代? 的相关文章

随机推荐