Я использую JustMock и Entity Framework, чтобы попытаться написать модульные тесты для службы. В службе, у меня есть этот метод:Макет класса Entity Framework с JustMock внутри другого класса
List<Log> GetLogType(string type)
{
using (var db = new LogContext())
{
return db.Logs.Where(x => x.Type == type).ToList();
}
}
И у меня есть тест:
[TestMethod]
public void GetLogTypeTest()
{
IList<Log> logs = new List<Log>
{
new Log() {
Id = 1,
Type = "Debug",
Message = "Test Message"
}
};
var logContext = Mock.Create<LogContext>(Constructor.Mocked).PrepareMock();
logContext.Logs.Bind(logs);
var service = new LogService();
var debugs = service.GetLogType("Debug");
Assert.AreEqual(1, debugs.Count());
}
Как получить услугу, чтобы использовать мой высмеивал контекст? Сейчас он пытается подключиться к базе данных и, таким образом, ошибочно.
Спасибо, думаю, я приближался к нему неправильно. Должен делать много рефакторинга, но это сработает. – RossD
Нет проблем. Без инъекции зависимостей вы не сможете выполнять большие модульные тесты. Если вы не хотите использовать DI, вы все равно можете выполнить интеграционные тесты, но в этом случае вам нужно создать тестовую базу данных и установить строку подключения, чтобы указать на эту БД в app.config вашего тестового проекта. – kat1330