The "best practice" in your situation is to have two specs like so:
describe "#deposit" do
it 'adds $10 to a savings account' do
user.bank.deposit(10)
user.bank.deposit.saving.should == 10
end
it 'creates a deposit record' do
user.bank.deposit(10)
user.deposit_record.should == #something.
end
end
There are two downsides to having multiple expectations (should's) in
one example/spec:
1.) If the first expectation fails, the second one will not run.
false.should be_true # fails
false.should be_false # never runs
2.) It is much more simple for the description of the example/spec to
specify one expected behaviour. If you did something like this:
it "deposits $10 to a savings account and adds a new record"
You would have to remember that you're checking for TWO
behaviours, which is not as clear and direct as one.
Hope this helps.
On Aug 27, 1:43 am, Zhenning Guan <[email protected]> wrote:
> in real world, when user deposit money into their bank, bank have money
> and can check deposit record. so what would it be in rspec?
>
> it 'should be deposit $10'
> user.bank.deposit(10)
> user.bank.deposit.saving.should == 10
> end
>
> about test , should be deposit $10 is clear? maybe 'should deposit $10
> success'?
>
> and when deposit, we should have a deposit record. added another test?
>
> it 'should be a deposit record when deposit $10'
> user.bank.deposit(10)
> user.deposit_record.should == #something.
> end
>
> or just mixed it in one test?
>
> it 'should be deposit $10'
> user.bank.deposit(10)
> user.bank.deposit.saving.should == 10
> user.deposit_record.should == #something.
> end
> --
> Posted viahttp://www.ruby-forum.com/.
> _______________________________________________
> rspec-users mailing list
> [email protected]http://rubyforge.org/mailman/listinfo/rspec-users
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users