5

使用 minitest 找到本教程,并想知道 rspec 中是否有等效的匹配器:

有趣的 minitest 断言

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)

您的第二个期望应该通过以下方式进行测试:

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

编辑

直到今天我都不知道类实现了<=>操作符。您可以简单地检查是否Dish::Player < HTTParty.

于 2013-06-20T09:41:24.950 回答