2011-11-10 7 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

あなたはIxに対処すること嘲笑インタフェースのメソッドの期待やセットアップを配置する必要がありますIy<T>インタフェースをからかっているので。私はあなたがIy<T>にこういうものを持っていることを期待しています。

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

ここでこれを行うことができます。

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

とどこかz.Joy()であなたはx.SomeMethod()

+0

はちょうど約5分前にそれを考え出し呼び出します、ありがとう! – Dave

関連する問題