Post on 19-Jul-2015
#SPSSAN
June 30, 2012
San Diego Convention Center
WRITING TESTABLE
CODE
In SharePoint
#SPSSAN
Agenda
Introduction
Repository Pattern
IoC and Dependency Injection Patterns
Model View Presenter Pattern
Unit Testing strategies
Summary
#SPSSAN
Introduction
Tightly-coupled SharePoint Code
Difficult to test Web Parts and Pages
Need a better way to organize the code
The answer: Design Patterns!
#SPSSAN
What is the Repository Pattern?
Isolates the domain model from data access
Encapsulates the domain object persistence
Persistence Ignorance is bliss!
Works well when used with interfaces…
#SPSSAN
Demo
Repository Pattern
#SPSSAN
What is IoC?Inversion of Control
Depend upon abstract types, not concrete types
#SPSSAN
Benefits of Inversion of Control
Can swap out implementations later (such as different
repositories)
Allows parts of the application to be built independently
with no complicated dependencies
Can work in ASP.NET and switch over to SharePoint later
#SPSSAN
What is DI?
DI = Dependency Injection
One solution to the problem instantiating abstract types
Available DI frameworks
Castle
Unity
MEF
Etc.
#SPSSAN
Benefits of Dependency Injection
Can write more granular unit tests
Don’t need to hit the database for testing UI logic
Allows parts of an application to be easily swapped out
without re-compiling
Using a DI framework makes it almost seamless!
#SPSSAN
Demo
IoC and Dependency Injection
#SPSSAN
Model View Presenter Pattern
Gets the logic out of your UI so it can be tested!
Forced separation of concerns
Can enable UI logic to be shared
Side Point: Why not use MVC in SharePoint?
#SPSSAN
Demo
Model View Presenter
#SPSSAN
Unit Testing Strategies
Test the presenters separately
Use mock views and mock repositories when testing the
presenters
Test the concrete repositories separately
#SPSSAN
Demo
Unit Tests
#SPSSAN
Summary
Design Patterns are the key to better SharePoint code!
Repository, IoC and DI patterns make testing way easier
MVP pattern gets the logic out of your UI code
#SPSSAN
June 30, 2012
San Diego Convention Center
GET THE SOURCE
CODE!
Source Code Link
#SPSSAN
June 30, 2012
San Diego Convention Center
CONTACT INFO
Tim McCarthy
tim.mccarthy@perficient.com
#SPSSAN
The After-Party: SharePint
Karl Strauss Brewing Company
1157 Columbia Street
San Diego, CA 92101
Phone: 619-234-2739
Immediately following event closing & prize drawings (@6:30 pm)
Directions (.9 miles):
1. Head northeast on 1st Ave
2. Turn left onto W B St
3. Turn left onto Columbia St
Karl Strauss will be on the left
#SPSSAN
June 30, 2012
San Diego Convention Center
THANK OUR SPONSORS
Please be sure to fill out your session evaluation!