On Dec 18, 2009, at 2:46 pm, Tom Stuart wrote: > Can you elaborate? From a position of no knowledge, the most obvious question > to me is: why would I care about the state of O? Either the change in O's > state is observable through its behaviour (in which case I specify that > behaviour) or it's not (in which case I don't care).
The example given is for an auction sniper (S). So, Given S has just notified one of its listeners that it's bidding When S is informed that a bid has been made by a competitor And the auction is closed Then S should notify its listeners that it lost the auction Given S has just notified one of its listeners that it's bidding When S is informed that its bid is highest And the auction is closed Then S should notify its listeners that it won the auction The last one looks like the code below in Java[1], but note this is further on from the code in chapter 14. Interestingly, writing it as GWT transforms the style of the expectations. eg, "When S is informed that a bid has been made by a competitor" replaces (something like) Allow S to notify its listeners that it's in the bidding state Am I making sense? Not sure if these examples capture the essense. Ashley @Test public void reportsWonIfAuctionClosesWhenWinning() { allowingSniperBidding(); allowingSniperWinning(); ignoringAuction(); context.checking(new Expectations() {{ atLeast(1).of(sniperListener).sniperStateChanged( new SniperSnapshot(ITEM_ID, 135, 135, WON)); when(sniperState.is("winning")); }}); sniper.currentPrice(123, 12, PriceSource.FromOtherBidder); sniper.currentPrice(135, 45, PriceSource.FromSniper); sniper.auctionClosed(); } private void allowingSniperBidding() { allowSniperStateChange(BIDDING, "bidding"); } private void allowingSniperWinning() { allowSniperStateChange(WINNING, "winning"); } private void allowSniperStateChange(final SniperState newState, final String oldState) { context.checking(new Expectations() {{ allowing(sniperListener).sniperStateChanged(with(aSniperThatIs(newState))); then(sniperState.is(oldState)); }}); } [1] http://github.com/sf105/goos-code/blob/master/test/unit/test/auctionsniper/AuctionSniperTest.java -- http://www.patchspace.co.uk/ http://www.linkedin.com/in/ashleymoran _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users