いつでもMoqを使用してユニットテストを作成しましたが、Elmah.ErrorSignal.FromCurrentContext
と呼びます。ヌル参照例外が発生して失敗します。私はControllerContext
を模擬することができていると私はちょうどこのようなエラーログコマンドを使用したいと思います..ユニットテスト時のFromCurrentContextのロギングエラーが発生しました。
Elmah.ErrorSignal.FromContext(ControllerContext.HttpContext).Raise(e);
残念ながらControllerContext.HttpContext
はタイプHttpContextBase
のものであり、このエラーロギング方式では動作しません。
Elmahエラーログを直接呼び出すより良い方法はありますか?残念ながら、Application.HttpContext
オブジェクトは(下記の例のように)嘲笑されたり、目的を果たしたりすることはできません。
モックApplication
とApplication.HttpContext
:
ctrlCtx.SetupGet(x => x.HttpContext.ApplicationInstance)
.Returns(new Mock<HttpApplication>().Object);
ctrlCtx.SetupGet(x => x.HttpContext.ApplicationInstance.Context)
.Returns(new Mock<HttpContext>().Object);
生成されたエラー:非仮想(VBでオーバーライド)メンバー
関連[ElmahのErrorSignalルーチンをどうやって模擬できますか?](http://stackoverflow.com/questions/1019833/how-can-i-mock-elmahs-errorsign-routine) –