A new Auto-mocking extension have been recently added to AutoFixture allowing the mock instances to be created by Foq.
This brings the total number of Auto-mocking extensions for AutoFixture up to five:
To install AutoFixture with Auto Mocking using Foq, run the following command in the Package Manager Console:
PM> Install-Package AutoFixture.AutoFoq
To use it, add an AutoFoqCustomization
to the Fixture
instance:
let fixture = Fixture().Customize(AutoFoqCustomization())
In the test below the mocked instance is created automatically by Foq:
[<Fact>]
let AutoMockInterfaceAndSetupExpectations() =
// Fixture setup
let fixture = Fixture().Customize(AutoFoqCustomization())
let dummy = obj()
// Exercise system
let sut = fixture.Create<IInterface>()
sut.MakeIt(dummy) |> ignore
// Verify outcome
Mock.Verify(<@ sut.MakeIt(dummy) @>, Times.Once)
// Teardown
The above test can be written declaratively using AutoData theories:
[<Theory>][<AutoFoqData>]
let AutoMockInterfaceAndSetupExpectationsDeclaratively
(sut: IInterface, dummy: obj) =
sut.MakeIt(dummy) |> ignore
Mock.Verify(<@ sut.MakeIt(dummy) @>, Times.Once)
The [AutoFoqData]
attribute is defined as:
type AutoFoqDataAttribute() =
inherit AutoDataAttribute(
Fixture().Customize(AutoFoqCustomization()))
An automatically published release created from the latest successful build can be also downloaded from here.