Unit testing 通过UnityAutoMoqContainer解析依赖项
我已经开始使用UnityAutoMoqContainer 我有以下两个问题,特别是关于container.GetMock()调用Unit testing 通过UnityAutoMoqContainer解析依赖项,unit-testing,unity-container,moq,automocking,Unit Testing,Unity Container,Moq,Automocking,我已经开始使用UnityAutoMoqContainer 我有以下两个问题,特别是关于container.GetMock()调用 我希望下面的断言能够成功,但是它抛出了一个异常 private UnityAutoMoqContainer container; [SetUp] public void SetUp() { container = new UnityAutoMoqContainer(); } [Test] public void Are_mocks_Same(){
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);
}
private UnityAutoMoqContainer容器;
[设置]
公共作废设置()
{
容器=新的UnityAutoMoqContainer();
}
[测试]
公共空间是相同的吗{
var serviceMock=new Mock();
var getMock=container.getMock();
areseme(getMock,serviceMock);
}
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);
}
var httpContextBaseMock = new Mock<HttpContextBase>();
var httpContextBaseMock=new Mock();
var mock = container.GetMock<HttpContextBase>();
var mock=container.GetMock();
依赖项解析失败,类型为=
“System.Web.HttpContextBase”,name=“(无)”。发生异常
while:解析时。异常为:InvalidOperationException-异常
无法构造类型HttpContextBase。您必须配置
容器来提供此值
问题是为什么容器不方便返回模拟的抽象类型?AreName方法测试两个参数是否引用了相同的对象。当你这样做的时候
var serviceMock = new Mock<IService>();
var getMock = container.GetMock<IService>();
Assert.AreSame(getMock, serviceMock);
var serviceMock=new Mock();
var getMock=container.getMock();
areseme(getMock,serviceMock);
创建两个不同的对象,它们将永远不会是相同的引用。如果不使用容器,automock容器无法了解您创建的实例。然而,这将成功:
var mock1 = container.GetMock<IService>();
var mock2 = container.GetMock<IService>();
Assert.AreSame(mock1, mock2);
var mock1=container.GetMock();
var mock2=container.GetMock();
Assert.arame(mock1、mock2);
无法从抽象类型创建模拟是一个错误,但现在应该修复。如果您更新到v2.1.0,它将有望按预期工作
希望这有帮助
-托马斯