对于使用.Verify()和.Setup()测试,我非常习惯使用AutoFixture.Freeze<Mock<IViolationChecker>>()来设置一个类
但是,在我正在处理的类中,使用IViolationChecker的枚举
private readonly IEnumerable<IViolationChecker> _violationCheckers;如何使用AutoFixture.Freeze定义我的IViolationChecker列表?我用过
var violationCheckers = AutoFixture.Freeze<Mock<IEnumerable<IViolationChecker>>>();但我不确定该如何编写.Verify()或.Setup()。
发布于 2019-02-28 09:41:15
一种选择是冻结集合,并为每个项目使用Mock.Get来获取用于设置和验证的模拟。
//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();
}
//...https://stackoverflow.com/questions/54776041
复制相似问题