Являюсь новым для модульного тестирования и просто начинаю писать модульные тесты для существующей базы кода.Как скомпилировать диспетчер объектов
Я хотел бы написать модульный тест для следующего метода класса.
public int ProcessFileRowQueue()
{
var fileRowsToProcess = this.EdiEntityManager.GetFileRowEntitiesToProcess();
foreach (var fileRowEntity in fileRowsToProcess)
{
ProcessFileRow(fileRowEntity);
}
return fileRowsToProcess.Count;
}
Проблема с GetFileRowEntitiesToProcess();
Платформа Entity Менеджер оберткой Entity Framework контекст. Я искал это и нашел одно решение - иметь тестовую базу данных из известного состояния для тестирования. Однако мне кажется, что создание нескольких объектов в тестовом коде даст более последовательные результаты теста.
Но, поскольку он существует, я не вижу способа издеваться над Менеджером без какого-либо рефакторинга.
Есть ли наилучшая практика для решения этой проблемы? Я извиняюсь за то, что этот вопрос немного наивен, но я просто хочу, чтобы я пошел по правильному пути для остальной части проекта.
Похоже, что «его» - зависимость здесь. Может ли это быть издевательством и, в свою очередь, вернуть известный (также макет) объект для «EdiEntityManager», который сам имеет заглушку известного поведения для 'GetFileRowEntitiesToProcess()'? Поскольку 'his' является внешним для этого тестируемого кода, это зависимость и должен быть макетом. Везде, где этот код получает 'his', должен быть тот, где этот макет вводится. – David
К сожалению, это была опечатка. Должно быть, это «это» –
Тот же принцип все еще применяется. Что такое 'EdiEntityManager'? Можно ли это издеваться? Это внешняя зависимость, и ее надо издеваться. Где бы он ни заселялся в объекте, туда вводился макет. Я предполагаю, что я имею в виду, что именно мешает вам насмехаться над этим? – David