2

像大多数人一样,我在 Ruby 之前学习过 Rails,现在我想更好地了解 Ruby。
我正在制作一些脚本,我想测试它们。
我很惊讶不能在普通的 ruby​​ 脚本中使用 Rails 的测试语法。以下代码不起作用:

require "test/unit"
class MyTest < Test::Unit::TestCase
  test "one plus one should be equal to two" do
    assert_equal 1 + 1, 2
  end
end

# Error: wrong number of arguments (1 for 2) (ArgumentError)

您必须改用此代码:

require "test/unit"
class MyTest < Test::Unit::TestCase
  def one_plus_one_should_be_equal_to_two
    assert_equal 1 + 1, 2
  end
end

这对我来说似乎不太可读。
是否可以在纯 Ruby 脚本中使用“声明性”语法?

4

1 回答 1

3

根据 Rails 的 API,该test方法在ActiveSupport::Testing::Declarative模块中定义,并使用一种元编程来添加新的测试方法。

如果你还没有安装 Rails gem,你可以安装 activesupport gem:

gem install activesupport

现在你只需要 require 它并使你的类继承自ActiveSupport::TestCase.
这是完整的代码:

require "test/unit"
require "active_support"
class MyTest < ActiveSupport::TestCase
  test "one plus one should be equal to two" do
    assert_equal 1 + 1, 2
  end
end
于 2012-08-31T14:32:30.753 回答