RSpec 中的 should_receive

Posted

技术标签:

【中文标题】RSpec 中的 should_receive【英文标题】:should_receive in RSpec 【发布时间】:2010-04-21 09:30:21 【问题描述】:

据我所知,should_receive 仅适用于模拟对象。我想要检查的是某个类(不是对象)是否收到了某个消息,例如:

User.should_receive(:all).once

我该怎么做?

UPD。通常,为模型和控制器编写测试我们可以编写 User.should_receive(:smth).once。但就我而言,我正在测试 lib 文件夹中的任意类,不知何故我总是收到以下消息:

<User( [fields] ) (class)> expected :all with (no args) once, but received it 0 times>

关于为什么会这样的任何想法?测试以某种方式看到 User 类,但无法检查它是否收到消息。当然,我已经检查了十次用户 确实收到了消息。

【问题讨论】:

【参考方案1】:

简单:

User.should_receive(:all).once

我想要检查的是某个类(不是对象)是否收到了某个消息

一个类一个对象!

【讨论】:

感谢您的回答,约尔格。我已经用更多细节更新了这个问题。

以上是关于RSpec 中的 should_receive的主要内容,如果未能解决你的问题,请参考以下文章

RSpec 中的夹具

为啥在测试 RSPEC 时 JBuilder 不返回 JSON 中的响应正文

下载 CSV 文件并检查 RSpec 测试中的列

在 rspec 中的钩子之前与之前相同:all?

rspec中的模拟方法链

rails3, rspec2 ActiveRecord#changes 规格中的错误