【发布时间】:2020-07-29 20:08:56
【问题描述】:
我在尝试存根方法时遇到了麻烦。我有以下工作:
动物关系工作
def perform(user_id, animal_id)
user = User.find(User_id)
animal_data = Animal::Zoo.internal_data(animal_id)
owner_score = OwnerService.new.generate_score!(animal_data, user)
AnimalMailer.animal_tips_message(user, owner_score).deliver_later
end
我想同时存根 internal_data 方法和 OwnerService.generate_score 并测试作业是否能够使用正确的参数调用 AnimalMailer.animal_tips_message
let(:m) { AnimalRelationJob.new.perform(user_id, animal_id) }
before {
allow(OwnerAuth::Validation).to receive(:create_key) { true }
allow_any_instance_of(OwnerService.new).to receive(:generate_score).and_return(100)
allow(Animal::Zoo).to receive(:internal_data).and_return(1)
}
it "should call the mailer" do
expect(m).to receive(animal_tips_message).with(admin_user, 100)
end
我现在收到错误:
undefined method `ancestors' for #<OwnerService:0x0029812>
我认为它可能来自我从 OwnerService 初始化中存根的方法
class OwnerService
def initialize
validated = OwnerAuth::Validation.create_key(....)
end
【问题讨论】:
标签: ruby-on-rails rspec stub