Writing Testable Code in SharePoint

Preview:

DESCRIPTION

Many developers forget about good object-oriented design techniques when developing in SharePoint, most of the time because they get overwhelmed by the framework. Unit testing often gets thrown out of the window, and most of the time the application becomes very tightly coupled to the SharePoint object model. This talk will demonstrate how to overcome these obstacles and build solid SharePoint application code that is much more testable and is easier to maintain.

Citation preview

Writing Testable Code in SharePoint

Tim McCarthySenior Technical Architect

Perficient

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…

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

DemoIoC 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?

DemoModel View Presenter

Unit Testing Strategies

• Test the presenters separately• Use mock views and mock repositories when

testing the presenters• Test the concrete repositories separately

DemoUnit 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 McCarthytim.mccarthy@perficient.com

We want your feedback!Use this QR code or visit:http://sps.la/feedback

Silver Sponsors:

Victory Lap- social event "SharePoint Victory Lap" Social Event for

SPSLA will be at: 5:30pm to 8pm at Di Piazzas (5205 E. Pacific Coast Hwy, 90804)

Recommended