Я тестирую этот метод, который в конце концов делает сопоставление с моим DTO
public async Task<IActionResult> Get()
{
var currencies = await _repository.GetCurrencies().ToListAsync().ConfigureAwait(false);
if (currencies.Count == 0)
return NoContent();
return Ok(currencies.ToDto());
}
В ответ на этот метод я получаю следующую ошибку:
Сообщение: System.InvalidOperationException: Mapper не инициализирован.
Вызовите Initialize с соответствующей конфигурацией. Если вы пытаетесь
использовать экземпляры Mapper через контейнер или иным образом, убедитесь, что вы
не иметь никаких вызовов статических методов Mapper.Map, и если вы
используя методы расширения ProjectTo или UseAsDataSource, убедитесь, что вы
передать соответствующий экземпляр IConfigurationProvider.
Я использую статический метод для автоматического сопоставления
public static List<CurrencyDTO> ToDto(this List<Currency> model)
{
return Mapper.Map<List<Currency>, List<CurrencyDTO>>(model);
}
Когда я запускаю только этот тест, он проходит, но когда я сжимаю всех, он говорит
Я уже пытался заставить инициализатор компоновщика инициализировать маппер, но продолжить ошибку, тестирование проходит только в том случае, если он выполняется по отдельности
public class CurrenciesControllerTest
{
public CurrenciesControllerTest()
{
AutoMapperConfig.RegisterMappings();
}
private Mock<IReimbursementRepository> _repository = new Mock<IReimbursementRepository>();
[Fact]
public async Task Should_return_all_currencies()
{
var mock = Currencyfactory().AsQueryable().BuildMock();
_repository.Setup(x => x.GetCurrencies()).Returns(mock.Object);
var controller = new CurrenciesController(_repository.Object);
var response = await controller.Get().ConfigureAwait(false) as OkObjectResult;`enter code here`
Assert.Equal(response.StatusCode, (int)HttpStatusCode.OK);
}
}