を私は拡張メソッド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でスタブすることはできませんが - 私が試してみると、実際の拡張は&と呼ばれています)
どのようにして拡張メソッドをスタブしましたか?あなたの例から、拡張メソッドはインタフェースの偽の実装に対してただ実行されます。これは許されています。拡張メソッドの動作のために、より多くのソースコードを提供する必要があるかもしれません – Nkosi