Хорошо, как было дано в моем другом вопросе, AutoMoq
не использует AutoFixture по умолчанию. Это нормально и легко решается путем настройки и настройки ReturnsUsingFixture
.
Но можно ли это настроить с помощью Auto Fixture Data Theory?
Итак, у нас есть собственный AutoDataAttribute, который я назову [MyAutoData]
. И там мы вызываем и настраиваем множество настроек, таких как AutoConfiguredMoqCustomization
, настраиваем его для создания контроллеров webapi и регистрируем множество пользовательских генераторов. Таким образом, мы смогли вытащить ПОЧТИ всю стандартную конфигурацию в несколько основных файлов конфигурации. Мы даже установили атрибут MyAutoData
для системных тестов, поэтому, если вы запросите, скажем, Id<Account>
, он создаст новую учетную запись, используя фактические вызовы webapi, и вернет действительный идентификатор учетной записи.
Но как вы можете справиться с этим для настройки возврата метода AutoMoq
? Вот пример:
[Theory, MyAutoData]
public async Task Test(Mock<ICqrsService> mockService, TheRequest request)
{
mockService.Setup(service => service.CreateAsync<TheRequest>(It.IsAny<TheRequest>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(result); // or similar car with ReturnUsingFixture
/* now we can test */
}
В любом другом случае мы смогли переместить такую конфигурацию в MyAutoData
(или в класс, который он вызывает). Но для AutoMoq я не вижу, как это должно работать. Мы не можем сделать приспособление.
Есть ли способ запустить метод установки после того, как AutoFixture сгенерирует элемент, но до того, как он будет доставлен в метод тестирования? Или есть способ настроить поведение AutoMoq, чтобы ВСЕГДА использовать .ReturnsUsingFixture(fixture)
? Или я просто неправильно думаю об этой проблеме?