我试图设置服务定位进行单元测试,像这样:起订量设置服务定位
var mockS = new Mock<IServiceLocator>();
ServiceLocator.SetLocatorProvider(() => mockS.Object);
mockS.Setup(x => x.GetInstance<IObjectFactoryMethod<IAddress>>()).Returns(new Mock<ObjectsFactory>().Object);
var factoryMock = new Mock<IObjectFactoryMethod<IAddress>>(MockBehavior.Strict);
factoryMock.Setup(x => x.Create(null)).Returns(new Mock<IAddress>());
var factory = ServiceLocator.Current.GetInstance<IObjectFactoryMethod<IAddress>>();
// testing - factory returns null
var address = factory.Create(null); // address is null
代码执行罚款。工厂在调试过程中显示为模拟工厂,但是当调用Create(null)时,它会返回null而不是新的IAddress模拟。
你“创造”似乎是你不使用的对象上设置。 –