意外调用:remove_method(mocha)

时间:2015-12-22 14:22:36

标签: ruby-on-rails ruby-on-rails-4 minitest

我正在尝试在rails应用程序中测试我的Smser类,并尝试仅使用mocha来存根实际的发送方法。我还要提一下,这是我第一次尝试嘲弄/抄袭。

当运行测试时,我得到了失败unexpected invocation: :remove_method - 看起来像我的对象上调用的mocha,用于存根方法。所以我不知道该怎么做。

以下是相关的代码段:

Smser class

# models/smser.rb
class Smser
  ...<truncated>...

  def self.instance
    @@instance ||= self.new
  end

  private

  # Need to stub this
  def twilio(args)
    @client.account.messages.create args
  end
end

测试

# test/models/smser.rb
test "should send sms" do
  Smser.instance.stubs(:twilio).with(from: '123', to: '234', body: 'Message body')
  # <- ... here we run something that should invoke 'twilio' on the Smser object
end

测试输出

unexpected invocation: 
  #<Smser:0x68e4940>.twilio(:from => '123', :to => :remove_method, :body => :twilio)

satisfied expectations:
- allowed any number of times, invoked once: 
  #<Smser:0x68e4940>.twilio(:from => '123', :to => '234', :body => 'Message body')

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

错误实际上意味着Mocha期望在twilio类上调用Smser方法。

而不是:

Smser.instance.stubs(:twilio).with(from: '123', to: '234', body: 'Message body')

它应该是:

Smser.instance.stubs(:twilio).with(from: '123', to: '234', body: :twilio)

因为,正如错误所述,身体不是&#34;消息体&#34;但是:twilio

HTH