Как смокапировать Эльму?

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

Как я могу издеваться над подпрограммой ErrorSignal Elmah?

рассматриваю вариант 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);
}

}

Меня немного смущает тот факт, что это, похоже, не реализует интерфейс, и я не совсем уверен, почему он, похоже, предназначен для какого-то наследования.

Спасибо


person chobo2    schedule 06.09.2009    source источник


Ответы (1)


Идея заключается в том, что вы должны использовать класс ErrorSignaler в своем коде для сигнализации об ошибке вместо прямого вызова Elmah. При запуске вашего кода в модульных тестах, поскольку HttpContext.Current имеет значение null, компонент Elmah не будет использоваться, и не будет никаких исключений нулевых ссылок.

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

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

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

person Nader Shirazie    schedule 06.09.2009
comment
Да, это то, что я в итоге сделал, тогда я издевался над этим. Мне просто интересно, у парня был виртуальный - person chobo2; 07.09.2009
comment
Это позволило бы ему создать подкласс ErrorSignaler, чтобы добавить еще больше поведения к методу Signal. Эта гибкость может быть полезна в некоторых ситуациях. - person Nader Shirazie; 07.09.2009