Вопрос

Я видел этот пост, но он меня смутил.

Как я могу высмеять процедуру ErrorSignal Элмы?

рассматриваю вариант 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 class в вашем коде, чтобы сигнализировать об ошибке вместо прямого вызова Elmah.При запуске вашего кода в модульных тестах, поскольку HttpContext.Current имеет значение NULL, компонент Elmah не будет использоваться и не будет никаких исключений для нулевых ссылок.

Вы также можете создать ErrorSignaler интерфейс:

public interface IErrorSignaler
{
    void SignalFromCurrentContext(Exception e);
}

Таким образом, реализация, используемая для реализации IErrorSignaler при необходимости можно высмеивать в модульных тестах.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top