Pergunta
Eu vi este post, mas estou meio confuso com isso.
Como posso zombar da rotina errônea de Elmah?
Estou olhando para a opção 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);
}
}
Estou meio confuso pelo fato de que isso não parece implementar uma interface e não sei ao certo por que parece estar em vigor para algum tipo de herança.
Obrigado
Solução
A ideia aqui é que você usaria o ErrorSignaler
Classe em seu código para sinalizar um erro em vez de invocar o Elmah diretamente. Ao executar seu código em testes de unidade, porque HttpContext.Current
é nulo, o componente Elmah não será usado e não haverá exceções de referência nula.
Você também pode criar um ErrorSignaler
interface:
public interface IErrorSignaler
{
void SignalFromCurrentContext(Exception e);
}
Dessa forma, a implementação usada para implementar IErrorSignaler
pode ser ridicularizado nos testes de unidade, se necessário.