Ruby on rails 基于MiniTest的领域对象提取

Ruby on rails 基于MiniTest的领域对象提取,ruby-on-rails,rspec,testunit,minitest,Ruby On Rails,Rspec,Testunit,Minitest,我有两个问题。第一个是基本的。MiniTest是UnitTest的替代品。因此,如果您在rails中使用生成器,就会得到一堆ActiveSupport::TestCase类。如果您使用minitest(不使用minitest规范rails),那么您可以这样做 1.must_equal 1 # instead of assert_equal 1, 1 对吗?所以我很困惑为什么会有railscast#327(专业版付费墙sry)中描述的MiniTest::Unit::TestCase类。当看到我

我有两个问题。第一个是基本的。MiniTest是UnitTest的替代品。因此,如果您在rails中使用生成器,就会得到一堆ActiveSupport::TestCase类。如果您使用minitest(不使用minitest规范rails),那么您可以这样做

1.must_equal 1
# instead of 
assert_equal 1, 1
对吗?所以我很困惑为什么会有railscast#327(专业版付费墙sry)中描述的MiniTest::Unit::TestCase类。当看到我实际使用的测试套件时,会感到困惑。如果minitest是一个替代品,那么我将使用minitest执行testunit样式的rails测试。如果我把它取出来,我就用testunit来运行testunit测试

假设我使用MiniTest来运行TestUnit风格的测试

require 'test_helper'
class FooTest < ActiveSupport::TestCase
end
需要“测试助手”
类FooTest
在观看destroyallsoftware关于提取域对象的屏幕广播后,我受到了启发。他提出了一些关于避免加载test_helper.rb的好观点,以加快测试套件的速度,而不诉诸spork技巧(这正是我所做的)。但是,当我从上面得到ActiveSupport::TestCase时,如何避免加载test_helper.rb呢


您不能使用MiniTest或TestUnit提取域对象并将其放入lib/或extras/中吗?

第一个问题的答案是“不,不正确”。Minitest不是Test::Unit的“替代品”。Minitest为大多数Test::Unit提供了一个更简单的实现,但不是全部。在Ruby 1.9中,Test::Unit库构建在Minitest的TestCase类之上,填补了两个库之间的空白

Minitest为编写测试提供了两种模式:经典的测试用例方法和单独的specdsl。与Test::Unit一样,Spec DSL构建在Minitest的TestCase之上。因此,尽管1.9的Test::Unit和Minitest的Spec DSL都是基于Minitest的TestCase构建的,但您不能在Test::Unit中使用Spec DSL,因为它不是其祖先的一部分

第二个问题的答案是,如果要使用ActiveSupport::TestCase,就不能避免test_helper.rb。您需要要求minitest/autorun,并让您的测试类从minitest::Unit::TestCase继承