#autofac
#autofac
Вопрос:
Я нахожусь в процессе обновления нашего Autofac.Extras.Библиотека Moq до последней версии (6.0.0) в рамках нашего модульного тестового проекта. После обновления я заметил, что тесты с использованием: var mock = AutoMock.GetLoose()
, больше не поддерживают метод «Предоставить». Поэтому я начал копаться в документации в поисках какого-нибудь обходного пути.
После ознакомления с документами по началу работы (https://autofaccn.readthedocs.io/en/v5.2.0/integration/moq.html#getting-started ) Я заметил, что появился новый способ регистрации mocks и зависимых сервисов using AutoMock.GetLoose(cfg => cfg.RegisterMock(mockA))
. Однако некоторые из наших тестов требуют более одного введенного макета, и мне непонятно, как это сделать. Возьмем, к примеру:
[Test]
public void Test()
{
var mockA = new Mock();
mockA.Setup(x => x.RunA());
var mockB = new Mock();
mockB.Setup(x => x.RunB());
// mockA is automatically registered as providing IServiceA
using (var mock = AutoMock.GetLoose(cfg => cfg.RegisterMock(mockA)))
{
// mockA will be injected into TestComponent as IServiceA
var component = mock.Create();
// ...and the rest of the test
}
}
Как мне зарегистрировать как MockA, так и mockB?
Спасибо.
Ответ №1:
Вы пробовали поместить обе регистрации в GetLoose
лямбда-выражение?
[Test]
public void Test()
{
var mockA = new Mock();
mockA.Setup(x => x.RunA());
var mockB = new Mock();
mockB.Setup(x => x.RunB());
// Register both mocks here:
using (var mock = AutoMock.GetLoose(cfg => {
cfg.RegisterMock(mockA);
cfg.RegisterMock(mockB);
}))
{
// ...and the rest of the test
}
}
Если вы пробовали это, и это не сработало, вам следует обновить свой вопрос, чтобы включить оба:
- Что вы пробовали это и
- Каким было сообщение об исключении или неправильный результат
В противном случае, если это сработает … 🎉
Комментарии:
1. Я думал, что пробовал это, но, кажется, мне не хватало фигурных скобок. Спасибо!