SharePoint Saturday San Diego - Writing Testable Code in SharePoint

Post on 19-Jul-2015

508 views 0 download

Transcript of SharePoint Saturday San Diego - Writing Testable Code in SharePoint

#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!