Ho una suite di test strutturato in questo modo:Come posso "aspettare" prima del blocco per cambiare qualcosa in rspec?
let(:cat) { create :blue_russian_cat }
subject { cat }
context "empty bowl" do
let!(:bowl) { create(:big_bowl, amount: 0) }
before { meow }
# a ton of `its` or `it` which require `meow` to be executed before making assertion
its(:status) { should == :annoyed }
its(:tail) { should == :straight }
# ...
# here I want to expect that number of PetFishes is going down after `meow`, like that
it "will eat some pet fishes" do
expect {???}.to change(PetFish, :count).by(-1)
end
end
solito vorrei solo mettere questo blocco al di fuori del contesto è stata chiamata expect
così:
it "will eat some pet fishes" do
expect { meow }.to change(PetFish, :count).by(-1)
end
ma rende il codice un po 'più difficile da leggere, poiché il codice correlato è collocato al di fuori del suo contesto.
Idea interessante, anche se la riscrittura di tutti i test in modalità 'expect' sembra essere scomoda. – Andrew
@Andrew Mi ci vuole un po 'di tempo se si hanno molti test, ma penso che ne varrà la pena a lungo andare perché sembra che la sintassi 'expect' sarà [la sintassi predefinita per RSpec che si muove in avanti] (http: //myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax) ed è [consigliato per nuovi progetti] (http://branch.com/b/which-rspec-syntax-do -preferisci). Ma questa è principalmente una questione di gusti e preferenze sintattiche. –
grazie, è stato inaspettatamente perspicace. – Andrew