2

我看过这篇文章,但我对此感到有些困惑。

如何模拟 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);
}

}

我有点困惑,因为这似乎没有实现接口,我不确定为什么它似乎可以用于某种继承。

谢谢

4

1 回答 1

2

这里的想法是您将使用ErrorSignaler代码中的类来发出错误信号,而不是直接调用 Elmah。在单元测试中运行代码时,因为HttpContext.Current为 null,所以不会使用 Elmah 组件,也不会出现任何 null 引用异常。

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

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

这样,IErrorSignaler如果需要,可以在单元测试中模拟用于实现的实现。

于 2009-09-06T22:47:18.380 回答