运行 rspec 时,它显示未实现(allow_any_instance_of)

jeg*_*gan 0 ruby rubygems rspec ruby-on-rails ruby-on-rails-3

我的 rspec 线

allow_any_instance_of(School).to receive(:admission).and_return(:body)
Run Code Online (Sandbox Code Playgroud)

lib/school.rb 我的模块学校中有我的录取方法

def self.admission()
Run Code Online (Sandbox Code Playgroud)

像这样,但是当我运行 rspec 时,它会抛出类似的错误

Failure/Error: allow_any_instance_of(School).to receive(:admission),and_return(:body)
       School does not implement #admission
Run Code Online (Sandbox Code Playgroud)

spi*_*ann 5

admission在这个例子中是一个类方法(注意self.它前面的)。这意味着允许任何实例接收该方法是没有意义的。

您有两个选择:

  1. 保留它是一个类方法,但将期望更改为allow(School).to receive(:admission)...
  2. 通过删除makeadmission和实例方法self.

这取决于您的应用程序哪种方法更有意义。