2016-10-28 4 views
0

を私は拡張メソッドCheckLoaderDatabaseConnectionを定義した上でインターフェイス、ILoaderを、持っている:マイクロソフト偽物 - 拡張メソッドが機能すべきではないスタブしかし、それは

//the extension method 
    public static class LoaderExtensions 
    { 
    public static void CheckLoaderDatabaseConnection(this ILoader loader) 
    { 
     //data access stuff 

    } 

すべてdoumentationを私は持っている私が伝えアウト拡張メソッドをスタブするときにシムを使用する方法は静的なので、スタブすることはできません。

私はそれを試したので、実際にはMoqでは動作しません。

しかし、私できスタブ偽物のインターフェイス:

私のユニットテストで
var loader = new MyNamespace.Fakes.StubILoader() { }; 

は、私がテストしてる具体的なインスタンスのコンストラクタにスタブに渡し、それがこの行になるとき:

loader.CheckLoaderDatabaseConnection(); 

スタブ付きのメソッド(何もしません)を呼び出して、正常に動作します。

これはなぜですか?私は何かを欠いているに違いない。私はここでシムを使う必要はありませんでした(私はそれをMoqでスタブすることはできませんが - 私が試してみると、実際の拡張は&と呼ばれています)

+1

どのようにして拡張メソッドをスタブしましたか?あなたの例から、拡張メソッドはインタフェースの偽の実装に対してただ実行されます。これは許されています。拡張メソッドの動作のために、より多くのソースコードを提供する必要があるかもしれません – Nkosi

答えて

0

いいえ、拡張メソッドwasn呼び出されるのですが、青い死の画面からリブートした後は、以前は拡張メソッドが呼び出されており、ユニットテストは期待通りに失敗しています。

これが数日間どのように機能していたのか分かりません。何か変わった&私はこの質問に答えられるとは思わない。

関連する問題