2013-06-20 14 views
9

ho semplice caso di test:Aspettatevi di raise_error e test fallisce perché solleva questo errore

it "is removed when associated board is deleted" do 
    link = FactoryGirl.create(:link) 
    link.board.destroy 
    expect(Link.find(link.id)).to raise_error ActiveRecord::RecordNotFound 
end 

E viene a mancare con l'uscita:

1) Link is removed when associated board is deleted 
    Failure/Error: expect(Link.find(link.id)).to raise_error ActiveRecord::RecordNotFound 
    ActiveRecord::RecordNotFound: 
    Couldn't find Link with id=1 
    # ./spec/models/link_spec.rb:47:in `block (2 levels) in <top (required)>' 

Qualsiasi idea del perché?

risposta

20

Per rilevare l'errore è necessario inserire il codice in un blocco. Il codice sta eseguendo Link.find(link.id) nell'ambito che non si aspetta un errore. Test corretto:

it "is removed when associated board is deleted" do 
    link = FactoryGirl.create(:link) 
    link.board.destroy 
    expect { Link.find(link.id) }.to raise_error ActiveRecord::RecordNotFound 
end 
Problemi correlati