模拟嵌套的界面

时间:2011-11-10 19:17:02

标签: moq

我想测试在内部接口上调用一个方法,我怎么用moq做这样的事情?鉴于以下示例,我希望Z.Joy()能够调用Ix.Method()。

interface Ix { void Method(); }
interface Iy<T> {}
class Z {
    public Z (Iy<Ix> y) {}
    public void Joy() {}
}

[TestClass]
public class Test {
    [TestMethod]
    public void ATest() {
        var x = new Mock<Ix>();
        var y = new Moxk<Iy<Ix>>(); // how can I pass x.Object?
        var z = new Z(y.Object);

        x.Verify(() => x.Method());

        z.Joy();
    }
}

1 个答案:

答案 0 :(得分:4)

因为您正在模拟接口Iy<T>,所以您必须对该模拟接口上处理Ix的方法设置期望或设置。我希望你在Iy<T>中有类似的东西。

interface Iy<T>
{
     T SomeMethod();
}

所以,你可以。

y.Setup(x => x.SomeMethod()).Returns(x.Object));

z.Joy()的某个地方,您会拨打x.SomeMethod()