Moq从Setup返回不同的对象
本文关键字:对象 返回 Setup Moq | 更新日期: 2023-09-27 18:03:24
您能告诉场景返回的对象何时可能与设置对象不同吗?
在执行src代码时,在Setup
中调试时设置的Object Id
不同。
interface IBaseClass
{
IFactory aFactory;
}
class Point
{
Point(int x, int y)
{
this.x = x;
this.y = y;
}
int x;
int y;
}
interface Factory
{
public AnObject create(string a, Point pt);
}
测试代码
var anObjectMock = new Mock<AnObject> { DefaultValue = DefaultValue.Mock };
var sMatcher = It.Is<string>(s => s.Equals("aString"));
var ptMatcher = It.Is<Point>(p => (p.x == CONST_X && p.y == CONST_Y));
var FactoryMock = Mock.Get<IFactory>(IBaseClassMock.Object.Factory);
FactoryMock.Setup(f => f.create(sMatcher, ptMatcher)).Returns(anObjectMock.Object); // Say ObjectId is #1
SRC-
Object obj = BasicImaging.Factory.create("aString", new Point(CONST_X, CONST_Y));
// Getting no ObjectId
BasicImaging.Factory
是实际的mock(IBaseClassMock.Factory
(吗?我认为没有。
您需要将mock注入BasicImaging.Factory
中,以便它使用您的mock而不是实际代码。
您应该使用IBaseClassMock.Object.Factory
(即您设置的mock(而不是BasicImaging.Factory
。