Chapter 9: Driving Development with Customer Tests: Exposing a Failure Condition


Overview

In the previous chapter, we defined a customer test for adding and deleting a review from the database and then built the implementation accordingly . In this chapter, we enhance the AddReview Web service to prevent a reviewer from submitting multiple reviews for the same recording. When a reviewer attempts to do this, the Web service should not add the review to the database; it should return the id of the review that already exists in the database. Here is this requirement expressed as a customer test:

fit.ActionFixture

start

CustomerTests.ReviewAdapter

 

enter

FindByRecordingId

100001

enter

SetRating

4

enter

SetContent

Test Fit Content

enter

SetReviewerName

Example Reviewer

enter

AddReview

 

check

ReviewAdded

False

check

ExistingReviewId

100002

To run this script, we need to add a method, named ExistingReviewId , to the ReviewAdapter . For now, let s fake the implementation and have the method always return 0. Let s run the script and see if we get the failures that we anticipate. Here is the output of the script:

fit.ActionFixture

start

CustomerTests.ReviewAdapter

 

enter

FindByRecordingId

100001

enter

SetRating

4

enter

SetContent

Test Fit Content

enter

SetReviewerName

Example Reviewer

enter

AddReview

 

check

ReviewAdded

False expected

   

True actual

check

ExistingReviewId

100002 expected

   

0 actual

The script fails as anticipated because there is nothing in the implementation that prevents the user from adding a review to a recording as many times as he likes. In turn , we also run the programmer tests. Because all the programmer tests pass, there must be a missing programmer test. Let s write a programmer test that exposes the problem and drives the implementation.




Test-Driven Development in Microsoft .NET
Test-Driven Development in Microsoft .NET (Microsoft Professional)
ISBN: 0735619484
EAN: 2147483647
Year: 2004
Pages: 85

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net