【发布时间】:2015-06-03 15:01:57
【问题描述】:
在我的 Rails 应用程序中,我有一个 User 模型:
class User
def self.foo
User.all.each{ |user| user.bar }
end
def bar
end
end
在我的规范文件中,我想检查foo 是否为每个用户调用bar,到目前为止,这就是我所拥有的:
describe '::foo' do
let!(:users) { Fabricate.times(5, :user) }
it 'calls bar for every user' do
users.each do |user|
expect(user).to receive(:bar)
end
User.foo
end
end
虽然该方法被调用(我调试过它,所以我很确定)规范是红色的。
我还尝试编写这段代码来了解问题出在哪里:
let!(:user) { Fabricate(:user) }
it 'fails' do
expect(user).to receive(:bar)
User.first.bar
end
it 'pass' do
expect(user).to receive(:bar)
user.bar
end
如果我直接引用我的实例,它似乎可以工作,如果我从数据库中获取它,则期望不起作用。
我使用 mongoid,不确定这是否相关。
【问题讨论】:
-
user.bar有效,user对象定义了bar方法并对其作出响应。
标签: ruby-on-rails rspec mongoid