2016-06-29 7 views
0

Ich habe einen rspec Test, der wie folgt aussieht:rspec umständlich Syntax zu testen Änderungszählwert

describe 'on DELETE to :destroy' do 
    before do 
    expect { delete :destroy, id: 6 }.to change(ModelName, :count) 
    end 

    it { is_expected.to respond_with :success } 
    it { is_expected.to render_template :destroy } 
end 

Ich finde es peinlich, die den Test auf Änderung innerhalb des before Block zählen, und ich brauche nicht zu laufen es zweimal. Ich hoffe auf eine Syntax etwas wie diese stattdessen zu finden:

describe 'on DELETE to :destroy' do 
    before do 
    delete :destroy, id: 6 
    end 

    it { is_expected.to respond_with :success } 
    it { is_expected.to render_template :destroy } 
    it { is_expected.to change(ModelName, :count) } 
end 

jedoch der dritte Test mir folgende Fehler gibt:

expected #count to have changed, but was not given a block 

Antwort

0

Wie die Fehlermeldung schon sagt, müssen Sie einen Block passieren, zB:

it { is_expected.to change { ModelName.count } }

+0

ich erhalte eine ähnliche Fehlermeldung mit 'es {is_expected.to Änderung {ModelName.count}}' - 'erwartetes Ergebnis geändert haben, wurde aber nicht ein block' gegeben –