我已经开始使用UnityAutoMoqContainer Here is the Link 并且我特别在container.GetMock()调用周围有2个以下的问题。通过UnityAutoMoqContainer解决依赖关系
我期待下面的断言取得成功,但它会引发异常。
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:\用户... ...。
那么为什么当“预期”和“但是”是相同的,它仍然会引发异常?
我看到不同的是,GetMock使用统一解决I,E 解决()依赖性,其中新的模拟没有。但我无法解释我自己造成这种例外的原因。
解决抽象类型:
我用Moq.Mock到如下解决抽象类型。
var httpContextBaseMock = new Mock<HttpContextBase>();
但是下面的调用UnityAutoMoqContainer抛出该异常:
var mock = container.GetMock<HttpContextBase>();
依赖解析失败,类型= “System.Web.HttpContextBase”,名字=“ (没有)”。同时发生异常 :解决。异常是:InvalidOperationException - 无法构造类型为HttpContextBase的 。您必须配置 容器才能提供此值。
问题是为什么容器不便于返回一个模拟抽象类型?