0

Rubyで行の下の意味を知りたいだけなので、私の質問がばかげている場合は申し訳ありません。(私はコースのために Rails に関する本をできるだけ早く読んでいるので、Ruby 言語をしっかりと把握していません。)

単体テスト用のコードは次のとおりです。

class ProductTest < ActiveSupport::TestCase
  test "product attributes must not be empty" do   // this line I don't know
    product = Product.new
    assert product.invalid?
    assert product.errors[:title].any?
    assert product.errors[:description].any?
    assert product.errors[:price].any?
    assert product.errors[:image_url].any?
  end

私が聞きたいのは、私が知らない行で、構文 test "...." do、それはどういう意味ですか? 関数、メソッド、クラス、その他の何かですか?

4

2 に答える 2

2

これはクラスマクロと呼ばれ、単純なメカニズムの名前です。

これはクラスメソッド(def self.test)であり、たとえばクラス定義で直接使用できます。

(Test :: Unitで)テストケースを作成する通常の方法は、次のようになります。

def test_something_interesting
  ...
end

ただし、ActiveSupport(Railsの一部)はこの構文糖衣を提供するため、次のように記述できます。

test "something interesting" do
  ...
end

このメソッドは、test_something_interestingという名前のメソッドを定義します。

Railsで実装を見つけることができます:

activesupport/lib/active_support/testing/declarative.rb
于 2012-06-24T17:04:21.110 に答える
2

ブロックです。テスト フレームワークのどこかに、このメソッドが定義されています。

def test(description, &block)
  # do something with block
end

Ruby の優れた本を選び、ゆっくり読むことを強くお勧めします。

于 2012-06-24T16:44:25.107 に答える