我的rspec测试用例正在返回
expected: 1 time with any arguments
received: 0 times with any arguments
字符串
这个错误,即使该方法被特定的活动记录调用。
下面是我的rspec:
context "when the City has updated" do
let!(:city) {create(:city, ...}
let!(:user) {create(:user, city: city)
let!(:user2) {create(:user, city: city)
it "should call the process_scheudle_period for each of the user" do
expect(user).to receive(:create_new_period_for_mayor)
expect(user2).to receive(:create_new_period_for_mayor)
city.update_attribute(:mayor, "mr alford")
Delayed::Worker.new.run Delayed::Job.find_by(process_identifier: "process_city_changes")
end
end
型
正在延迟作业中调用市长的create_new_period_for_mayor。所以我也运行延迟的作业。
在city.rb中
保存后回调
self.delay(process_identifier:“process_city_changes”).process_city_data_changes
def process_city_data_changes
users = self.users
users.each do |user|
user.create_new_period_for_mayor
end
end
型
我已经使用了调试器,并且对于每个记录都调用了该方法,但是我的测试总是返回
任何参数都需要1次,已收到0次..
当我使用expect_any_instance_of(User)时,它会被传递。
但我需要对每个用户都有特别的期望。
而且我已经验证了调用create_new_period_for_mayor的用户是我所期望的同一个用户。
我哪里错了?任何帮助
1条答案
按热度按时间sz81bmfz1#
在后台,当一个作业排队时,DJ会存储您正在使用的模型对象的主键和类。然后,当作业运行时,它使用这些参数创建对象的新示例。
...即作业运行时的对象与您将其入队的对象不是同一个示例...
所以是的,使用
_any_instance_of