Хорошо, как было указано в моих other question, AutoMoq
не использует AutoFixture по умолчанию. Это прекрасно и легко решить, выполнив настройку и настройку ReturnsUsingFixture
.Настройка AutoMock с помощью систем данных AutoFixture
Но может ли это быть настроено с помощью автоматических систем данных Fixture?
Итак, у нас есть пользовательский атрибут 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)
? Или я просто думаю об этой проблеме, все неправильно?
Это решило его, спасибо. – Riplikash