我已经开始使用 UnityAutoMoqContainer Here is the Link 我有以下 2 个问题,特别是关于 container.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”失败:预期:与 C:\Users 中的 UnityAutoMoq.Tests.UnityAutoMoqContainerFixture.Are_mocks_Same() 相同。
那么为什么当“预期”和“但是”相同时它仍然抛出异常?
我看到的不同之处在于GetMock使用 Unity 来解决新的 Mock没有的Resolve()依赖项。但我无法解释我自己这个异常的原因。
解析抽象类型:
我使用 Moq.Mock 来解析抽象类型,如下所示。
var httpContextBaseMock = new Mock<HttpContextBase>();
但是,以下对 UnityAutoMoqContainer 的调用会引发异常:
var mock = container.GetMock<HttpContextBase>();
依赖项解析失败,type = "System.Web.HttpContextBase",name = "(none)"。异常发生时:解决时。例外是: InvalidOperationException - 无法构造类型 HttpContextBase。您必须配置容器以提供此值。
问题是为什么容器不便于返回一个模拟的抽象类型?