You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行RSpec提示School does not implement #admission错误如何解决?

错误产生原因
  • allow_any_instance_of 是RSpec中用来Mock类/模块的实例方法的专用方法,你在School模块中定义的admission带self.前缀,属于挂载在模块本身的类方法,不属于School实例的方法,因此RSpec检测不到对应的实例方法,抛出不存在的报错。
  • 你报错的测试代码中还存在语法问题:receive(:admission),and_return 中间多了多余的逗号,不符合链式调用的语法规范。
解决方案

根据你的实际业务需求二选一即可:

场景1:你需要保留admission作为类方法

直接修改RSpec测试代码,将Mock实例方法的写法替换为Mock类方法的写法即可:

allow(School).to receive(:admission).and_return(:body)

场景2:你本意是要定义admission为School的实例方法

修改lib/school.rb中的方法定义,去掉self.前缀即可,原有测试代码无需调整:

def admission()
# 原有方法逻辑
end

内容的提问来源于stack exchange,提问作者jegan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:27:01