题
我看到这个帖子,但我有点困惑的了。
我期待在选项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
可以在如果需要,单元测试嘲笑。
不隶属于 StackOverflow