RSpec 间谍方法问题
RSpec Spy method issue
it "calls #create if #find_or_create is called and no matching record exists" do
snack = class_spy(Snack, find_by_name: nil)
attrs = {name: 'test', location: 'test'}
snack.find_or_create(attrs)
expect(snack).to have_received(:create).with(attrs)
end
并在小吃内 class
def self.find_or_create(attrs)
snack = find_by_name(attrs[:name])
snack ||= create(attrs)
end
但是 create 似乎没有被调用——我想这是预期的吗?/关于我没有考虑到的任何想法?
我相信,你可以这样做:
it 'whatewer' do
expect(Snack).to receive(:create).with(attrs)
Snack.find_or_create(attrs)
end
it "calls #create if #find_or_create is called and no matching record exists" do
snack = class_spy(Snack, find_by_name: nil)
attrs = {name: 'test', location: 'test'}
snack.find_or_create(attrs)
expect(snack).to have_received(:create).with(attrs)
end
并在小吃内 class
def self.find_or_create(attrs)
snack = find_by_name(attrs[:name])
snack ||= create(attrs)
end
但是 create 似乎没有被调用——我想这是预期的吗?/关于我没有考虑到的任何想法?
我相信,你可以这样做:
it 'whatewer' do
expect(Snack).to receive(:create).with(attrs)
Snack.find_or_create(attrs)
end