我有一段代码调用工厂,然后使用返回的对象。
var myServiceObject = factoryService.GetTheObject(myParam);
myServiceObject.DoSomeWork(someData, moreData); // returns void
我正在用 Automock 编写一个测试,我想验证我是否调用了工厂并尝试使用该对象。
为了模拟工厂,我假设我需要它来返回一个实例?
mock.Mock<IFactoryService>().Setup(x => x.GetTheObject(It.IsAny<paramType>()))
.Returns({insertSomething});
我打算使用一个模拟对象,并做这样的事情:
mock.Mock<IMyService>().Setup(x => x.DoSomeWork(...));
var mockOfMyService = mock.Provide<IMyService>(new MockOfMyService()); // MockOfMyService inherits from IMyService
mock.Mock<IFactoryService>().Setup(x => x.GetTheObject(It.IsAny<paramType>()))
.Returns(mockOfMyService);
...
mock.Mock<IFactoryService>().Verify(...); // This passes
mock.Mock<IMyService>().Verify(x => x.DoSomeWork(...), Times.Once); // This errors
但是我在验证时遇到了无效的强制转换异常。有什么好的例子吗?我究竟做错了什么?