Beginning to Mock with Rhino Mocks and MbUnit - Part 1
page 2 of 7
by Ben Hall
Feedback
Average Rating: This article has not yet been rated.
Views (Total / Last 10 Days): 14699/ 451

What is a mock object?

A mock object is generally used as a stand-in, or replacement, for a real object while the system is being unit tested. The main purpose of using a mock object is to allow our tests to be more focused, self contained, predictable and reliable. By having our unit tests more isolated and predictable we can identify the cause of the failure in less time and false negatives (tests which fail but should pass) are reduced.

An example of when a mock object might be used is when a feature in your system is required to return different results based on the current time of day. Given this requirement, how could it be tested? It would have a number of problems, for example you would have to have different test logic depending on the time of day the tests where executed and worse, only being able to execute the test at certain times of the day in order for it to execute the conditional logic being tested. Identifying the real reason why a test has failed would also become a problem as it could be because of the code or because of the time the test was executed.

This is where mock objects become useful. A mock object would allow us to replace the unpredictable functionality of obtaining the time, and replace it with pre-setup logic with known values which we could test against. We could then write and configure different tests to take into account the different requirements without having to worry about when or where the tests are actually executed. This makes the tests more useful as they could be run and instantly report back if there was a problem.  As a result, tests can be run more often and problems are likely to be fixed in a much shorter time as one of the external dependencies which had the potential to cause problems has been removed.

Other reasons why you might want to use mock objects in your unit tests include:

·         Access to the real object is slow because of database calls or long calculations.

·         The real object uses a call back.

·         The real object requires access to external resources which are unavailable.

·         The real object has not finished being developed.


View Entire Article

Article Feedback

Title:  
Name:  
Url: ( Optional )
Comment:  
Please add 6 and 1 and type the answer here:

User Comments

Title: Stubs v Mocks   
Name: Ben Hall
Date: 5/27/2008 6:49:28 AM
Comment:
\
Title: I recomended this book   
Name: Carlos
Date: 5/27/2008 6:04:34 AM
Comment:
This post is very well, but are confused concepts(STUBS-MOCKS)
I recommend reading this book is really good.

http://www.manning.com/osherove/
Title: Diference Stubs and Mocks   
Name: Carlos
Date: 5/27/2008 4:28:18 AM
Comment:
I think these confusing terms between STUBS and MOCKS.
You've created a mock, for help to test the class, this is a stub not a mock. I recommend you read this article.

http://martinfowler.com/articles/mocksArentStubs.html
Title: Great Tutorial   
Name: Steve Smith
Date: 3/22/2008 12:55:29 PM
Comment:
It didn't click for me until I read this - been trying to learn Rhino Mocks off and on for the last week. Nice job!
Title: Thanks for sharing   
Name: Jeena
Date: 1/25/2008 9:32:33 AM
Comment:
Very good article. Thanks a lot
Title: Good introduction to Rhino Mocks   
Name: Tod Birdsall
Date: 12/27/2007 5:55:43 PM
Comment:
Thanks for the nice introduction. It was very clear and easy to follow.
Title: .   
Name: Pawel Tarnik
Date: 10/10/2007 8:39:38 AM
Comment:
Nice article, I look forward to reading the next part.
Thanks.
Title: Beginning to Mock with Rhino Mocks and MbUnit - Part 1   
Name: Lee
Date: 10/9/2007 7:46:47 PM
Comment:
Thanks for the article - it's clear and easy to follow.

Product Spotlight
Product Spotlight 
Learn More
.NET Tools
asp.net shopping cart
asp.net chart control






Ads Powered by Lake Quincy Media
Community Advice: ASP | SQL | XML | Regular Expressions | Windows


©Copyright 1998-2008 ASPAlliance.com  |  Page Processed at 8/22/2008 12:39:48 AM  AspAlliance Recent Articles RSS Feed
About ASPAlliance | Newsgroups | Advertise | Authors | Email Lists | Feedback | Link To Us | Privacy | Search