我看到这个帖子,但我有点困惑的了。

我怎么能嘲笑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);
}

}

我还挺由事实混淆,虽然,这似乎并没有实现一个接口,我真的不知道为什么它似乎是在地方某种继承。

由于

有帮助吗?

解决方案

这里的想法是,你可以使用ErrorSignaler类在代码中发出一个错误信号,而不是直接调用ELMAH的。当运行在单元测试代码,因为HttpContext.Current为空,则ELMAH组件将不会被使用,并且不会有任何空引用异常。

您还可以创建一个ErrorSignaler接口:

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

这样的实施用于实现IErrorSignaler可以在如果需要,单元测试嘲笑。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top