Тестирование регистратора с шаблоном адаптера - PullRequest
0 голосов
/ 13 марта 2019

У меня есть класс, и я хочу проверить, вызван ли метод, регистрирует журнал.

public class LoggerAdapter<TheClassWhichHasTheMethod>: ILoggerAdapter<etc>

Это адаптер, который я сделал.Итак, у меня есть методы, которые я использую и нуждаюсь в классе регистратора, и поместил их в класс регистратора адаптера

public void MethodOne(param1, param2, param3, param4)

И этот метод void сам по себе вызывает следующий метод внутри адаптера:

public void MethodTwo(param1, param2, param3, param4)

После этого регистрация завершена.Но подождите, это еще не все.Метод, при котором регистратор выполняет свою работу, выглядит следующим образом:

 public async Task Execute()
    {
        await //some logic

        //some more logic
       Here the logger does its job: _logger.MethodOne(param1, param2, param3)
     //After logging finishes, more logic follows
    }

Теперь интерфейс адаптера должен расширяться ILogger, потому что мне нужен ILogger как один из моих param.Дело в том, что после того, как я выполню часть Act:

//await _classInstance.Execute();

И так как я тестирую метод void, у меня есть тайм-аут.Хорошо, тайм-аут заканчивается, но после этого я понятия не имею, как проверить, зарегистрировался ли регистратор, т.е. _classInstance.Execute () запускается, регистратор вызывает MethodOne, который вызывает MethodTwo, и после этого он завершается.

1 Ответ

0 голосов
/ 13 марта 2019

Вы знаете, я бы предложил вам использовать библиотеку Moq. В этой библиотеке есть классный метод Verify, где вы можете проверить, был ли ваш метод вызван или нет. Вам нужно сделать что-то вроде этого:

var objectA = new Mock<ObjectA>(); // У ObjectA есть Method1, Method2. Method1, Method2 должны быть публичными виртуальными или принадлежать интерфейсу, поэтому ObjectA должен реализовать этот интерфейс;

Тогда objectA.Verify(o=>o.Method1(), Times.Once); // И то же самое с Method2.

...