Я начал использовать UnityAutoMoqContainer Вот ссылка
и у меня есть ниже 2 вопросов, в частности, в отношении контейнера. Вызов GetMock ().
Я ожидаю, что приведенный ниже Assert будет успешным, однако он выдаст исключение.
private UnityAutoMoqContainer container;
[SetUp]
public void SetUp()
{
container = new UnityAutoMoqContainer();
}
[Test]
public void Are_mocks_Same(){
var serviceMock = new Mock<IService>();
var getMock = container.GetMock<IService>();
Assert.AreSame(getMock, serviceMock);
}
Ошибка 1 Тест
'UnityAutoMoq.Tests.UnityAutoMoqContainerFixture.Are_mocks_Same'
не удалось: ожидается: то же, что и при
UnityAutoMoq.Tests.UnityAutoMoqContainerFixture.Are_mocks_Same () в
C: \ Users ......
.
Так почему же, когда «Ожидаемый» и «Но был» одинаковы, все равно возникает исключение?
Разница, которую я вижу, состоит в том, что GetMock использует Unity для разрешения зависимостей i, e Resolve () , где new Mock не имеет. Но я не могу объяснить свою причину этого исключения.
Разрешение абстрактных типов:
Я использую Moq.Mock для разрешения абстрактного типа, как показано ниже.
var httpContextBaseMock = new Mock<HttpContextBase>();
Однако приведенный ниже вызов UnityAutoMoqContainer вызывает исключение:
var mock = container.GetMock<HttpContextBase>();
Не удалось разрешить зависимость, тип =
"System.Web.HttpContextBase", name = "(none)". Произошло исключение
пока: пока решаю. Исключение: InvalidOperationException - The
Тип HttpContextBase не может быть создан. Вы должны настроить
контейнер для подачи этого значения.
Вопрос в том, почему контейнер не способствует возвращению смоделированного абстрактного типа?