30

我在某处读到“minitest”是“ruby 1.9.2+ 的新测试::unit”。

但是 ruby​​ 1.9.3 似乎同时包含test ::unit minitest,这是真的吗?

在默认的 Rails 测试中,如Rails 测试指南中所述......诸如ActiveSupport::TestCase,之类的东西ActionController::TestCase是使用Test::UnitorMinitest吗?

在 rails 指南中,它显示了具有如下定义的测试的示例:

test "should show post" do
  get :show, :id => @post.id
  assert_response :success
end

test string与使用类似 -- 的名称定义方法相反,该语法在 MinitestMinitesttest_something的文档中均未提及。那是从哪里来的?Rails 是否添加了它,或者它实际上是......任何测试 lib rails 正在使用的一部分? Test::Unit

PS:请不要告诉我“只使用 rspec”。我知道rspec。我正在尝试在 rails 的上下文中探索 stdlib 的替代方案。

4

2 回答 2

19

There is a Test::Unit "compatibility" module that comes with Minitest, so that you can (presumably) use your existing Test::Unit tests as-is. This is probably the Test::Unit module you are seeing.

As of rails 3.2.3, generator-created tests include rails/test_help which includes test/unit.

The test "something" do syntax is a rails extension. It's defined in ActiveSupport::Testing::Declarative, which is require'd by rails/test_help.

于 2012-05-13T18:34:03.490 回答
5

这可能是一个切线的回应,但至于您的 rspec 评论...您可能想看看minitest/spec在 1.9.x 中的 stdlib 中提供了规范风格的语法。

http://bfts.rubyforge.org/minitest/MiniTest/Spec.html

于 2012-11-03T17:03:53.760 回答