Mock-объект, возвращающий список макетов с Moq - PullRequest
7 голосов
/ 26 января 2010

Я пытаюсь проверить следующий код

    public void CleanUp()
    {
        List<ITask> tasks = _cleanupTaskFactory.GetTasks();

        //Make sure each task has the task.Execute() method called on them
    }

В моем тесте я создаю фиктивную реализацию _cleanupTaskFactory и хочу заглушить метод GetTasks () для возврата типа:

List<Mock<ITask>>

... но компилятор не примет это как возвращаемое значение.

Моя цель - убедиться, что для каждой возвращаемой задачи вызывается метод .Execute () с помощью метода Verify () MoQ.

Как я могу утверждать, что каждая задача выполняется?

1 Ответ

11 голосов
/ 26 января 2010

В вашем _cleanUpTaskFactory макете вы можете просто сделать что-то вроде следующего:

var mocks = new List<Mock<ITask>>();
for(var i = 0; i < 10; i++){
    var mock = new Mock<ITask>();
    mock.Setup(t => t.Execute()).Verifiable();
    mocks.Add(mock);
}

_cleanUpTaskFactoryMock.Setup(f => f.GetTasks()).Returns(mocks.Select(m => m.Object).Tolist());

Теперь убедитесь, что сохраняете ссылку на список mocks, и когда вы закончите тестирование, вы будете выполнятьнад всеми издевательствами и звоните Verify() вот так:

mocks.ForEach(m => m.Verify());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...