ASP.NET MVC, TDD, and Mock Objects - Meetup

bricklayerbelchedInternet and Web Development

Feb 5, 2013 (4 years and 9 months ago)

147 views

ASP.NET MVC, TDD, and Mock
Objects

Josh Gough

ATL ALT.NET

dotnet.meetup.com/134

Sept 24, 2008: Agenda


07:00
-

08:00: Dinner, drinks, and open
discussion



08:00
-

09:30: Focused discussion: 30 min
MVC+TDD+Mock Objects demo;



60 min group discussion on MVC, TDD &
Mock Objects

About ATL ALT.NET




We are a community of developers in Atlanta
dedicated to helping each other learn and apply the
best of .NET technologies.


Based on the “ALT.NET” groups from
http://altnetpedia.com




Calendar:
http://dotnet.meetup.com/134


Wiki:
http://atlalt.net/screwturn/


ASP.NET Model
-
View
-
Controller (MVC)


Much like Ruby
-
on
-
Rails, other MVC
frameworks

From
www.asp.net/mvc
:


Clear separation of concerns

(Clean code model,
loose coupling, high cohesion)


Testability
-

support for Test
-
Driven
Development
(And easy to mock dependencies)


Fine
-
grained control over HTML and
JavaScript

(works well with async and ajax)


Intuitive URLs

(excellent for SEO, strong
-
naming of URLs)



Test
-
Driven
-
Development

From
http://en.wikipedia.org/wiki/Test
-
driven_development


Requirement identified


Write an automated test


Run tests and make sure new one FAILS


Write some code


Run tests to make sure all PASS


Refactor


Repeat



TDD:


Unit Test Frameworks
for .NET:


NUnit


Visual Studio Test
Framework


MbUnit


Pex

Goals of Test Automation: xunitpatterns.com

Browser and Acceptance Test
Frameworks


Selenium


WatiN


FitNesse for .NET


Others?

Mock Objects

From
http://en.wikipedia.org/wiki/Mock_object




In object
-
oriented programming, mock
objects are simulated objects that mimic the
behavior of real objects in controlled ways.

Good examples of using Mocks:


supplies non
-
deterministic results (e.g. the current
time or temperature);


has states that are difficult to create or reproduce
(e.g. a network error);


slow (e.g. a database which would have to be
initialized before the test);


does not yet exist or may change behavior;


would have to include information and methods
exclusively for testing purposes

.NET Mocking Frameworks

From Roy Osherove’s blog:


Rhino Mocks


Moq


NMock


EasyMock


TypeMock

Popularity of

Mocking

Frameworks

Simple Demo: MVC File Processor

Simple, not complete, but demonstrates:


NUnit Unit Test Suite


Mocked Http File Upload
(credit: Scott Hanselman for
this code)


MvcContrib SimplyRestful Routing Extension


Some adherence to SOLID design principles


Thanks for Chris Rauber, Kevin Skibbe for design ideas here,
and Brian McCafferty for the S#arp architecture
http://code.google.com/p/sharp
-
architecture/



SimplyRestful Routing

Automatically maps controllers to 8 standard “RESTful” routes.
Keeps application focused on nouns instead of verbs/actions.
Part of MvcContrib.org. Learn more at:

http://abombss.com/blog/2007/12/10/ms
-
mvc
-
simply
-
restful
-
routing/




public static void RegisterRoutes(RouteCollection routes) {






SimplyRestfulRouteHandler.BuildRoutes(routes);

}


SimplyRestful Routes

Conclusion

Thanks! Questions, Comments, Tips?


Learn more about ASP.NET MVC at
http://www.asp.net/mvc



Notes about tonight will be on
http://atlalt.net/screwturn



Completed demo solution sample will be
posted on
http://dotnet.meetup.com/134