Create your own polished presentation in minutes. Just describe what you need.
Free to try, no credit card requiredMocking .NET Without Hurting Its Feelings
class DependenciesHog
{
public string foo
{
get;
set;
}
private void bar(int x)
{
//I do stuff
}
public event BigEvent EventHorizon;
private void SpaceFiller()
{
while (true)
{
LookInteresting();
}
}
}
Why use a Mocking Framework?
Using Hand-Crafted, Artisanal Mocks
John M. Wright
john@wrightfully.com
@wright2tweet
mock
mock
What can they do?
mock.VerifyAllExpectations();
mock.AssertWasCalled(x => x.MyMethod());
mock
vs
stub
vs
stub
A rose by any other name
would smell as sweet
work about the same
www.wrightfully.com
mock types
© Copyright 2017 John M. Wright
How do they do it?
Per Dev:
Per 5 Build Servers:
A Matter of Syntax
Code Examples (aka: What can you do?)
Unconstrained Code Examples
Generating Mocks
Example Test using a Mock
Code being tested
Using Moq Syntax
Code being tested
Unconstrained Frameworks:
Make Your Own Man-In-The-Middle Attack
Constrained Frameworks:
Limitations of Class Inheritance
Constrained Frameworks:
Class Inheritance On-Demand
internal types & members
Mocking Internal Types/Members
AssemblyInfo.cs
[assembly: InternalsVisibleTo("Your.TestAssembly")]
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")]
sealed types
Generated Classes:
Code Examples (aka: What can you do?)
ICorProfilerInfo::
SetILFunctionBody
Hijacked Code:
Internal Dev Team Meetup
July, 2017
Moq Syntax
RhinoMocks Syntax
NSubstitute Syntax
Typemock Syntax
MS Fakes Syntax
Typemock Syntax
MS Fakes Syntax
$ $ $
DateTime.Now
Throwing Exceptions
All that, plus:
Mocking Multiple Calls
wrightfully.com/mocktalk
Alternate Implementations
What can
I expect?
private members
Creating and Checking Expectations
JITCompilationStarted
dynamic
Unconstrained
Constrained
public types & members
My test
value
Stipulate A Return Value
methods, properties, events
partial
mock
class DatabaseConnection
{
}
substitute
More Info @
wrightfully.com/mocktalk
http://mimiandeunice.com/2011/07/19/expectations/
dynamic
mock
static types & members
shim
class AnotherOne
{
}
Using A Mocking Framework
Custom Mocks
File I/O
$$$
UI
$$
Integration
$
Unit Tests
FREE
158 members!
partial
Unconstrained
class DatabaseConnection
{
}
Great for testing "legacy" code.
Best fit for code written with testing in mind.
Class Being Tested
interfaces
fake
Tests
Return Value Based On Input
virtual / abstract members
strict
Constrained
Moq Syntax
RhinoMocks Syntax
NSubstitute Syntax
Typemock Syntax
MS Fakes Syntax
strict
mock
class DependenciesHog
{
public string foo
{
get;
set;
}
private void bar(int x)
{
//I do stuff
}
public event BigEvent EventHorizon;
private void SpaceFiller()
{
while (true)
{
LookInteresting();
}
}
}
Moq Syntax
RhinoMocks Syntax
NSubstitute Syntax
Typemock Syntax
MS Fakes Syntax
Create your own polished presentation in minutes. Just describe what you need.
Free to try, no credit card required