Domanda
Ho visto questo post, ma io sono una sorta di confuso da esso.
Come faccio beffe di routine ErrorSignal di Elmah?
Io sto guardando l'opzione 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);
}
}
Io sono un pò confuso ma per il fatto che questo non sembra per implementare un'interfaccia e io non sono davvero sicuro perché sembra di essere a posto per una sorta di eredità.
Grazie
Soluzione
L'idea è che si dovrebbe utilizzare la classe ErrorSignaler
nel codice per segnalare un errore invece di invocare direttamente Elmah. Quando si esegue il codice in unit test, perché HttpContext.Current
è nullo, non verrà utilizzata la componente Elmah, e non ci saranno eccezioni riferimento null.
Si potrebbe anche creare un'interfaccia ErrorSignaler
:
public interface IErrorSignaler
{
void SignalFromCurrentContext(Exception e);
}
In questo modo l'implementazione utilizzato per implementare IErrorSignaler
può beffare nei test di unità, se necessario.