私はこのように構成されたテストスイートを持っています:
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
expect
通常、このブロックを次のようにコンテキスト呼び出しの外に配置します。
it "will eat some pet fishes" do
expect { meow }.to change(PetFish, :count).by(-1)
end
ただし、関連するコードがそのコンテキストの外に配置されるため、コードが少し読みにくくなります。