質問

私はこの記事を見たが、私はそれによってソート混乱の思います。

どのように私はELMAHのErrorSignalルーチンを模擬することができますか?

私はオプション2で探しています。

Create a wrapper class around the call to Raise and just mock out the wrapper class.

public class ErrorSignaler {

public virtual void SignalFromCurrentContext(Exception e) {
    if (HttpContext.Current != null)
        Elmah.ErrorSignal.FromCurrentContext().Raise(e);
}

}

は、私はちょっとこれは、インターフェイスを実装していないようだという事実によってかかわらず混乱していて、私は本当にわから相続のいくつかの並べ替えのための場所であるように思わ理由はないです。

おかげ

役に立ちましたか?

解決

ここでの考え方は、あなたが直接ELMAHを呼び出すのではなく、エラーを通知するために、あなたのコード内でErrorSignalerクラスを使用するだろうということです。 HttpContext.Currentがヌルであるため、ユニットテストでコードを実行する場合、ELMAHコンポーネントが使用されない、任意のヌル参照例外ができなくなります。

またErrorSignalerインタフェースを作成することができます

public interface IErrorSignaler
{
    void SignalFromCurrentContext(Exception e);
}

必要に応じてIErrorSignalerを実装するために使用される実装は、ユニットテストでモックすることができること方法。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top