【发布时间】:2012-09-10 08:07:53
【问题描述】:
【问题讨论】:
-
或许这两个问题应该合并,有没有合并问题的方法?
-
以 +12 票结束!!!投票开放。
-
近距离投票的问题是它们通常不是很有建设性...
标签: ruby-on-rails ruby testing rspec minitest
【问题讨论】:
标签: ruby-on-rails ruby testing rspec minitest
我是 RSpec 开发人员之一,从未使用过 minitest,因此在阅读此答案时请考虑到我的偏见。
总的来说,RSpec 的强大之处在于它将许多测试概念具体化为一流的对象。其中 Test::Unit 和 Minitest 使用简单的方法进行断言,RSpec 使用支持否定、自我描述等的一流匹配器对象。 RSpec 的示例是支持丰富元数据的一流对象; minitest/spec 将it 块编译成简单的方法,这些方法不支持相同类型的丰富元数据。 RSpec 支持使用接受参数的一流构造(共享示例组)来指定共享行为; w/ minitest 你可以使用inheritance or a mixin to re-use tests,但它没有同类的一流支持。 RSpec 有一个明确的格式化程序 API(并且有许多第三方格式化程序使用它);我不知道 minitest 具有相同类型的一流格式化程序 API。
作为一个整天不断地运行测试和练习 TDD 的人,我发现 RSpec 赋予我的力量非常有用。但是,许多人认为它是多余的,而且额外的抽象会增加认知成本。
以下是我认为 minitest 缺乏的 RSpec 的一些特定功能:
before(:all) hooks(注意这是 RSpec 的高级用户功能,应该很少使用;在使用 RSpec 的多年中,我只使用过几次)around(:each)钩子使用 Minitest 的好处:
def test_blah 或it 'blah' 样式。总的来说,它有点像 Sinatra 与 Rails,我认为 Minitest 和 RSpec 都是不错的选择,具体取决于您的需求。
最后一件事:如果您更喜欢 Minitest 的某些特定方面,但您更喜欢 RSpec 的其他方面,它们可以轻松混合和匹配。我wrote a blog post about this,如果你有兴趣。
【讨论】:
rspec-fire 已“完全过时”,其功能已内置到 RSpec 3 本身中。
我从Test/Unit 和shoulda 转换为规范风格的Minitest,它得到了回报。它消除了样板文件,他们说它也提高了速度。我从来没有真正使用过 RSpec。相反,我编写了自己的原始测试和模拟框架(只是为了理解模拟,我在切换到 Minitest 时放弃了它)。我认为 RSpec 中的 stubbing/mocking 可能更高级,所以如果你已经学会了,就继续使用它。否则,请坚持使用 Minitest,这将使您能够与不了解 RSpec 的人合作,例如我。
【讨论】: