繁体   English   中英

模拟接口返回 null

[英]Mocked interface is returning null

我对使用起订量非常陌生,我遇到了一个问题,即我的方法调用之一是返回 null 尽管我已经嘲笑它。

我是mocking下面的接口。

public interface IUnitOfWorkFactory
{
    IUnitOfWork Create(KnownDbContexts knownDbContexts);
}

public interface IUnitOfWork : IDisposable
{
    Task SaveChanges();

    IRepository Repository { get; }
}

然后在我的单元测试代码中它看起来像这样。

_uowFactoryMock.Setup(x => x.Create(It.IsAny<KnownDbContexts>()))
            .Returns(It.IsAny<IUnitOfWork>());

我正在测试的代码如下所示。

using (var uow = _unitOfWorkFactory.Create(KnownDbContexts.UserDefined1))
{
    // At this point 'uow' is null.
}

为什么 IUnitOfWorkFactory.Create 返回 null?

在您当前的代码中,模拟工厂的 Create 方法返回一个It.IsAny<IUnitOfWork>类型的 object 。

但是,您希望您的模拟工厂返回工作单元的模拟,例如:

var uowMock = new Mock<IUnitOfWork>();
// here mock uowMock's methods (ie SaveChanges) in the same way it is done below for the factory

_uowFactoryMock.Setup(x => x.Create(It.IsAny<KnownDbContexts>()))
        .Returns(uowMock.Object);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM