我想测试在内部接口上调用一个方法,我怎么用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();
}
}
答案 0 :(得分:4)
因为您正在模拟接口Iy<T>
,所以您必须对该模拟接口上处理Ix
的方法设置期望或设置。我希望你在Iy<T>
中有类似的东西。
interface Iy<T>
{
T SomeMethod();
}
所以,你可以。
y.Setup(x => x.SomeMethod()).Returns(x.Object));
在z.Joy()
的某个地方,您会拨打x.SomeMethod()