2

ほとんどの人と同じように、私は Ruby の前に Rails を学びましたが、今は Ruby の知識を深めたいと思っています。
私はいくつかのスクリプトを作成しており、それらをテストしたいと思います。
Rails のテスト構文が単純な Ruby スクリプトで使用できないことに驚きました。次のコードは機能しません。

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 に答える