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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top