是否有一个rspec匹配器来确认一个类包含库,模块或gem?

时间:2013-06-18 18:54:07

标签: rspec

使用minitest发现本教程,并想知道rspec中是否存在等效的匹配器:

Interesting minitest assertion

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

1 个答案:

答案 0 :(得分:7)

测试类是否包含模块通常是错误的,因为您正在测试实现细节而不是预期的行为。

通过在课堂上调用ancestors可以找到包含的模块,因此您可以使用简单的include匹配器:

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

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

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

修改

直到今天我还不知道类实现了<=>运算符。您只需检查Dish::Player < HTTParty