5

minitestを使用してこのチュートリアルを見つけ、rspecに同等のマッチャーがあるかどうか疑問に思っていました:

興味深いミニテストのアサーション

describe "default attributes" do

  it "must include httparty methods" do
    Dish::Player.must_include HTTParty
  end

  it "must have the base url set to the Dribble API endpoint" do
    Dish::Player.base_uri.must_equal 'http://api.dribbble.com'
  end

end
4

1 に答える 1

10

クラスにモジュールが含まれているかどうかをテストすることは、期待される動作ではなく実装の詳細をテストしているため、通常は間違っています。

ancestors含まれているモジュールは、クラスを呼び出すことで見つけることができるため、単純にincludeマッチャーを使用できます。

expect(Dish::Player.ancestors).to include(HTTParty)

2 番目の期待は、次の方法でテストする必要があります。

expect(Dish::Player.base_uri).to eq 'http://api.dribbble.com'

編集

<=>今日まで、クラスが演算子を実装していることを知りませんでした。かどうかを簡単に確認できDish::Player < HTTPartyます。

于 2013-06-20T09:41:24.950 に答える