我应该在Mongoid中使用RSpec匹配器的哪个宝石?

时间:2011-03-04 03:39:31

标签: ruby-on-rails ruby-on-rails-3 rspec mongoid

似乎有两个宝石提供RSpec匹配器与Mongoid一起使用。

哪个是更好的选择?为什么?

MONGOID-RSPEC
Evan Sagge的mongoid-rspec gem为Mongoid提供RSpec匹配器。包括用于关联,选项,验证和字段的匹配器 http://github.com/evansagge/mongoid-rspec

REMARKABLE-MONGOID
Brian Cardarella的非凡的mongoid宝石为Mongoid提供了RSpec匹配器。它包含仅适用于Mongoid的匹配器,以及来自Remarkable :: ActiveModel的所有验证匹配器 http://github.com/bcardarella/remarkable_mongoid

2 个答案:

答案 0 :(得分:12)

就个人而言,我认为你不应该使用它们。指定您希望从代码中获得的行为,而不是实现,您的规范将更有意义。

如果您决定从Mongoid切换到MongoMapper会发生什么?或者回到ActiveRecord?你必须抛弃大部分测试套件并重新编写它。

所有这些库都指导您进行开发驱动测试,这是BDD / TDD的完全对立。

答案 1 :(得分:9)

不幸的是,非凡的mongoid的优势也是它的劣势。我们的想法是使用Remarkable ActiveModel匹配器作为验证器。这需要Remarkable 4.0的alpha版本。虽然Remarkable是一个质量非常高的图书馆,但自去年6月以来也没有被触及。这是我的图书馆的一个大问题,主要的依赖关系在8个多月内没有留下alpha版!我抓住了几个开发者,从未听过他们中的任何一个。

至于哪两个库更好,快速查看README似乎mongoid-rspec有更多功能。但是,我从未使用它,也不能谈论任何使用它的经验。

所有这一切都说得非常诚实(即使我写了一个库),我认为两者都是废话。不幸的是,Shoulda开始了这种无用的验证和协会测试方式,每个人都纷纷效仿。 (包括我自己)在几乎每种情况下编写测试都只是编写实际代码的重复工作。你根本没有真正测试任何东西。在最好的情况下,他们可以看到一个完整性检查。在最坏的情况下,他们完全是浪费时间。

我建议在测试套件的不同部分断言行为。