Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.
-
Upload
loraine-joseph -
Category
Documents
-
view
235 -
download
7
Transcript of Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.
![Page 1: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/1.jpg)
Unit Testing ASP.Net MVC
Craig BerntsonMojo Software Worx
![Page 2: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/2.jpg)
Thanks to our Sponsors!
To connect to wireless 1. Choose Uguest in the wireless list
2. Open a browser. This will open a Uof U website 3. Choose Login
![Page 3: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/3.jpg)
Ego stuff
Organizer, Utah Code Camp
Author, “Continuous Integration in .Net”
Conference & event speaker
INETA Community Speaker
ComponentOne Community Influencer
Columnist, DNC Magazine
17 time Microsoft MVP
Chief Software GardenerMojo Software WorxSalt Lake City
![Page 4: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/4.jpg)
Problem with…
if
switch
for
foreach
while
do…while
![Page 5: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/5.jpg)
Worse than you think
In 1976, G.J. Meyers described a 100-line program that had 1018
unique paths.
In 1979 he described a much simpler program. It was just a loop and a few IF statements. In most languages, you could write it in 20 lines of code. This program has 100 trillion paths
Testing Computer Software, Cem Kaner
![Page 6: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/6.jpg)
How do you test this?
6
![Page 7: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/7.jpg)
Agenda
What we won’t talk about TDD
Javascript testing
Production ready code
What we’ll talk about Setup tests
Remove database
Keep it simple
![Page 8: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/8.jpg)
Demo: Sample Application
8
![Page 9: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/9.jpg)
Unit test framework
MSTest
NUnit
xUnit
Others
![Page 10: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/10.jpg)
Unit test runner
MSTest
NUnit
Resharper
NCrunch
Others
![Page 11: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/11.jpg)
Demo: Our first test
11
![Page 12: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/12.jpg)
Default Data access
Difficult to test There is no IDbContext
DbContext tightly bound to EF (EntityFramework.dll)
Controller
Context
Entity Framework
![Page 13: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/13.jpg)
Removing database access
1. Repositories
2. Mocks
3. Dependency Injection
![Page 14: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/14.jpg)
Repositories
Easy to test IRepository
Extrapolate away from Context
Controller
Repository
Context
Entity Framewor
k
![Page 15: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/15.jpg)
Mocks
Allows us to fake the database
Controller
Repository
Mock
![Page 16: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/16.jpg)
Testing vs. runtime
Controller
Repository
Mock
Context
Entity Framewo
rk
![Page 17: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/17.jpg)
Class2
How we normally instantiate
Class1 new Class2()
![Page 18: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/18.jpg)
ClassA
Dependency injection
Class1 IClass2()
ClassA : IClass2
![Page 19: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/19.jpg)
Dependency injection
Allows for loose coupling
Inversion of control (IOC)
IOC Container
![Page 20: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/20.jpg)
Demo: Removing Database access
20
![Page 21: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/21.jpg)
Selectlist
ViewBag
ViewModel
Automapper
![Page 22: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/22.jpg)
Demo: SELECTLIST
22
![Page 23: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/23.jpg)
Ajax & json
AJAX calls into the controller
JSON returns result
![Page 24: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/24.jpg)
Demo: ajax & json
24
![Page 25: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/25.jpg)
Next steps?
My blog
Art of Unit Testing
Udemy.com
Katas
TDD
![Page 26: Unit Testing ASP.Net MVC Craig Berntson Mojo Software Worx.](https://reader036.fdocuments.net/reader036/viewer/2022081513/56649cef5503460f949bd802/html5/thumbnails/26.jpg)
Review
Arrange – Act – Assert
In memory
Repositories
Mocks
Dependency Injection
Automapper