2017-08-31 2 views
0
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 

und in der Snack-KlasseRSpec Spy Methode Ausgabe

def self.find_or_create(attrs) 
    snack = find_by_name(attrs[:name]) 
    snack ||= create(attrs) 
end 

scheint jedoch schaffen nicht genannt zu bekommen - ich denke, ist dies zu erwarten/Alle Gedanken, wie das zu, für die ich hatte? nicht berücksichtigt?

Antwort

1

glaube ich, können Sie es wie folgt aus:

it 'whatewer' do 
    expect(Snack).to receive(:create).with(attrs) 
    Snack.find_or_create(attrs) 
end 
+0

arbeitete wie ein Charme! Danke! – Drew