AutoFixture.Freeze IEnumarable of Mocks - PullRequest
0 голосов
/ 20 февраля 2019

Мне очень удобно использовать AutoFixture.Freeze<Mock<IViolationChecker>>(), чтобы настроить класс для тестирования с .Verify() и .Setup()

Однако в классе, над которым я работаю, перечисляется IViolationChecker

private readonly IEnumerable<IViolationChecker> _violationCheckers;

Как я могу использовать AutoFixture.Freeze для определения моего списка IViolationChecker?Я использовал

var violationCheckers = AutoFixture.Freeze<Mock<IEnumerable<IViolationChecker>>>();

Но я не уверен, как бы я написал .Verify() или .Setup().

1 Ответ

0 голосов
/ 28 февраля 2019

Можно было бы заморозить коллекцию и использовать 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();
}

//...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...