I'm very comfortable using AutoFixture.Freeze<Mock<IViolationChecker>>()
to setup a class for testing with .Verify()
and .Setup()
.
However, in the class I'm working on takes an enumerable of IViolationChecker
private readonly IEnumerable<IViolationChecker> _violationCheckers;
How can I use AutoFixture.Freeze
to define my list of IViolationChecker
? I've used
var violationCheckers = AutoFixture.Freeze<Mock<IEnumerable<IViolationChecker>>>();
But I'm not sure how I would write the .Verify()
or .Setup()
.
An option would be to freeze the collection and use Mock.Get
for each item to get the mocks for setup and verification.
//Arrange
var violationCheckers = AutoFixture.Freeze<IEnumerable<IViolationChecker>>();
var mocks = violationCheckers.Select(item => Mock.Get(item));
foreach (var mock in mocks) {
mock.Setup(_ => _.SomethingHere()).Verifiable(); //setup mock as desired.
}
//...
//Act
//...exercise member under test
//Assert
foreach(var mock in mocks) {
mock.Verify(_ => /* some predicate*/, Times.Once);
//OR
//mock.Verify();
}
//...