如何模拟Elmah?
问题描述:
我看过这篇文章,但我有点困惑它。如何模拟Elmah?
How can I mock Elmah's ErrorSignal routine?
我在看选项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
实现可以在单元测试中如果需要的话被嘲笑。
雅这就是我最终做的,然后我嘲笑它。我只是想知道这个人有“虚拟” – chobo2 2009-09-07 18:24:04
这将允许他继承ErrorSignaler以添加更多的行为到'Signal'方法。这种灵活性在某些情况下可能有用。 – 2009-09-07 18:30:07