any_instance should_receive无法正常工作

Uko*_*Uko 7 ruby rspec ruby-on-rails rspec-rails

我有这样的代码:

@dns = "#{params[:domain].split('/').reverse.join('.')}.#{params[:zone]}"
w = Whois::Client.new
@r = w.query(@dns)
Run Code Online (Sandbox Code Playgroud)

有路线:

match "domains/:zone/*domain" => "domains#show"
Run Code Online (Sandbox Code Playgroud)

我正在使用Whois Gem

我想测试一下,所以我有一个测试:

it "should query 'google.com.ua' from /ua/com/google" do
    get :show, :zone => 'ua', :domain => 'com/google'
    dns = "google.com.ua"
    Whois::Client.any_instance.should_receive(:query).with(dns)
end
Run Code Online (Sandbox Code Playgroud)

结果我得到:

Exactly one instance should have received the following message(s) but didn't: query
Run Code Online (Sandbox Code Playgroud)

哪里可以问题?我100%肯定.query被召唤

And*_*ite 13

在调用查询方法后,您可能会设置期望值?

  • `should_receive`检查未来,而不是过去 (3认同)