[英]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.