Professional Documents
Culture Documents
4 Efarchitecture m4 Testing Slides
4 Efarchitecture m4 Testing Slides
Goals
Automated Testing
Unit
Testing
Integration
Testing
System
Testing
Interaction
User Interface Testing
Testing
My Business Logic
Adds some data to
the database
My Concern
Does it really work?
My Test
Run the method
Query the database
to see if the data is
really there
But
is it really
a unit test?
EF Context
& Database
Fake Context
& Fake Data
IDbSet
System.Data.Entity.DbSet
MyCustom FakeDbSet
: IDbSet
2. Derive FakeDbSet
PromotionFakeDbSet
SalesContext
IObjectSet
System.Data.Entity.ObjectSet
MyCustom FakeObjectSet
: IObjectSet
ISalesContext
Fake
SalesContext
SalesContext
:DbContext
:ISalesContext
IDbSet(Customer)
IDbSet(Order)
DbSet(Customer) IDbSet() FakeDbSet(Customer) :ISalesContext
DbSet(Order)
FakeDbSet(Order)
DbSet()
FakeDbSet()
UOW/Repository
takes
ISalesContext
IUow
needs
IContext
IRepository
IUnitofWork<TContext>
IContext
IDbSet
SalesRepository
UoW<SalesContext>
CustomerRepository
SalesContext
UoW<CustSvcContext>
DbSet<Order>
DbSet < >
SalesRepository
UoW<FakeSalesContext>
FakeSalesContext
FakeOrderDbSet
FakexxDbSet
CustSvcContext
DbSet<Customer>
DbSet < >
IModelContext
IDbSet(class A)
System.Data.Entity.
IDbSet
abstract
FakeDbSet<T>
IDbSet(classB)
ModelContext
IDbSet(class A)
IDbSet(classB)
FakeModelContext
IDbSet(class A)
IDbSet(classB)
ClassFakeDbSet
:FakeDbSet<Class>
IEntityRepository<T>
IUnitOfWork
IClassRepository
:IEntityRepository<Class>
UnitOfWork<ConcreteContext>
ClassRepository
: IClassRepository
Fake
DbSet
Fake
Context B
Tests
Classes
Classes
Classes
Classes
System.Data
.Entity
Metadata &
DbContext
ositories
ositories
ositories
Repositories
Unit of Work
UI
IContext
?
?
?
FakeDbSet
?
?
?
Summary
Resources
My books
thedatafarm.com (mentoring)
thedatafarm.com/blog, learnentityframework.com