190 likes | 365 Views
Writing Testable Code. In SharePoint. Agenda. Introduction Repository Pattern IoC and Dependency Injection Patterns Model View Presenter Pattern Unit Testing strategies Summary. Introduction. Tightly-coupled SharePoint Code Difficult to test Web Parts and Pages
E N D
Writing Testable Code In SharePoint
Agenda • Introduction • Repository Pattern • IoC and Dependency Injection Patterns • Model View Presenter Pattern • Unit Testing strategies • Summary
Introduction • Tightly-coupled SharePoint Code • Difficult to test Web Parts and Pages • Need a better way to organize the code • The answer: Design Patterns!
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…
Demo Repository Pattern
What is IoC? • Inversion of Control • Depend upon abstract types, not concrete types
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
What is DI? • DI = Dependency Injection • One solution to the problem instantiating abstract types • Available DI frameworks • Castle • Unity • MEF • Etc.
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!
Demo IoC and Dependency Injection
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?
Demo Model View Presenter
Unit Testing Strategies • Test the presenters separately • Use mock views and mock repositories when testing the presenters • Test the concrete repositories separately
Demo Unit Tests
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
Get the Source Code! Source Code Link
Contact Info Tim McCarthy tim.mccarthy@perficient.com
The After-Party: SharePint Karl Strauss Brewing Company 1157 Columbia Street San Diego, CA 92101Phone: 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
Thank our Sponsors Please be sure to fill out your session evaluation!