8

研究将 Minitest 用于现有的 Rails 3.2。我试图了解 minitest-rails 和 minitest-spec-rails 之间的区别。

4

2 回答 2

13

minitest-spec-railsminitest-rails之间的主要区别在于它们解决问题的范围。

minitest-spec-rails

minitest-spec-rails 覆盖了 Rails 默认提供的测试基础设施,并增加了在测试中使用 Minitest Spec DSL 和匹配器的能力。这意味着您无需对现有测试进行任何更改即可开始使用 Spec DSL。这也意味着 Spec DSL 在每个测试中都可用。

minitest-rails

minitest-rails 增加了使用 Spec DSL 的能力,但也改变了编写测试的方法。它为您的测试提供了新的生成器,并允许您从 TDD 风格的断言或 BDD 风格的期望中进行选择。它将测试文件放置在更合理的位置。

它还允许您现有的测试与新的 Minitest 测试并存。您可以选择覆盖类似于 minitest-spec-rails 的默认测试基础架构,但您也可以选择不更改它们。

披露:我是 minitest-rails 的作者

于 2012-07-27T16:19:21.663 回答
1

使用 minitest-spec-rails,我们有一个可行的解决方案,将 MiniTest::Spec 替换为 ActiveSupport::TestCase 的超类。这个解决方案很简单,不需要您在 test_helper.rb 中重新创建新的测试用例,也不需要使用 minitest-rails 等 gem 提供的生成器。

在 Rails 中进行测试的最小更改。您的测试类将从 MiniTest::Rails::ActiveSupport::TestCase 继承,而不是 ActiveSupport::TestCase。您可以使用 MiniTest::Spec DSL。您可以使用标准模型、控制器、资源和其他生成器生成测试文件。

rails generate model User 

或者

您可以通过提供 --spec 选项指定在任何生成器上使用 MiniTest::Spec DSL 生成测试

rails generate model User --spec
于 2012-06-16T20:34:31.167 回答