Moq从安装程序返回不同的对象

时间:2013-03-12 11:41:53

标签: c# moq

是否可以告诉场景何时返回的对象可能与设置对象不同?

执行src代码时,Object Id中调试期间设置的Setup是不同的。

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

2 个答案:

答案 0 :(得分:0)

BasicImaging.Factory是否是实际模拟(IBaseClassMock.Factory)?我想不。

您需要将模拟注入BasicImaging.Factory,因此它使用模拟而不是实际代码。

答案 1 :(得分:0)

您应该使用BasicImaging.Factory(即您设置的模拟),而不是IBaseClassMock.Object.Factory