2011-11-10 78 views
2

我想測試一個方法在內部接口上調用,我將如何與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(); 
    } 
} 

回答

4

因爲你嘲諷Iy<T>,你將不得不放置在嘲弄接口與Ix處理方法上一個期望或設置界面。我希望你在Iy<T>有這樣的事情。

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

所以在這裏你可以。

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

,並在某處z.Joy()你會打電話給x.SomeMethod()

+0

就想通了這一點大約5分鐘前,謝謝! – Dave