Every time i run rspec_scaffold and look at the generated specs im shocked anew, there is just so much bla bla and so little information. I know that as a rule of thumb there should be one assertion per test, but in my opinion this is going too far. Note to self: New rule of thumb: “Test one aspect per test”. Meaning that i test ‘database interaction’ and ‘output’ (renders x + assigns y + flash z) in different tests. And when there is only simple logic (1-liner) in either of them, they may be merged.
OLD
before(:each) do @address = mock_model(Address) Address.stub!(:find).and_return([@address]) end def do_get get :index end it "should be successful" do do_get response.should be_success end it "should render index template" do do_get response.should render_template('index') end it "should find all addresses" do Address.should_receive(:find).with(:all).and_return([@address]) do_get end it "should assign the found addresses for the view" do do_get assigns[:addresses].should == [@address] end
NEW
it "should render index and assign all addresses" do Address.expects(:find).with(:all).once.returns([@address]) get :index response.should render_template('index') assigns[:addresses].should equal([@address]) end