Question
J'ai vu ce post, mais je suis en quelque sorte confus par ce dernier.
Comment puis-je moquer la routine ErrorSignal de Elmah
Je regarde l'option 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);
}
}
Je suis un peu confus mais par le fait que cela ne semble pas implémenter une interface et je ne suis pas vraiment sûr pourquoi il semble être en place pour une sorte d'héritage.
Merci
La solution
L'idée ici est que vous utilisez la classe ErrorSignaler
dans votre code pour signaler une erreur au lieu d'invoquer Elmah directement. Lors de l'exécution de votre code dans les tests unitaires, parce que HttpContext.Current
est nulle, le composant Elmah ne sera pas utilisé, et il n'y aura pas d'exceptions de référence null.
Vous pouvez également créer une interface ErrorSignaler
:
public interface IErrorSignaler
{
void SignalFromCurrentContext(Exception e);
}
De cette façon, la mise en œuvre utilisée pour la mise en œuvre IErrorSignaler
peut être moqué dans les tests unitaires, si nécessaire.