Есть эта кодовая база, в которой мы используем automapper и имеем два уровня: домен и сервис. У каждого есть свой объект для представления данных: DomainItem и ServiceItem. Служба получает данные из домена, для сопоставления использует внедренный в конструктор экземпляр automapper
Код: Выделить всё
class Service
{
public ServiceItem Get(int id)
{
var domainItem = this.domain.Get(id);
return this.mapper.Map(domainItem);
}
}
Используйте лучшие практики, чтобы у Mapper не было побочных эффектов и внешних зависимостей. Вы должны написать статическую функцию для преобразования одного объекта в другой за считанные секунды, просто сопоставляя поля.
Имея это в виду, стоит ли издеваться над картографом в подобные юнит-тесты?
Код: Выделить всё
[TestClass]
class UnitTests
{
[TestMethod]
public void Test()
{
var expected = new ServiceItem();
var mockDomain = new Mock();
// ... setup
var mockMapper = new Mock();
mockMapper.Setup(x => x.Map(It.IsAny()))
.Returns(expected);
var service = new Service(mockDomain.Object, mockMapper.Object);
var result = service.Get(0);
Assert.AreEqual(expected, result);
}
}
Мне кажется, что такой модульный тест на самом деле не приносит никакой пользы, потому что он эффективно тестирует только макеты, поэтому я бы либо вообще не писал его ИЛИ я бы использовал настоящий картограф, а не тот, который высмеивали. Я прав или я что-то упускаю?
Подробнее здесь:
https://stackoverflow.com/questions/399 ... unit-tests