Как смоделировать метод тестируемого класса с помощью MOQ - PullRequest
1 голос
/ 15 сентября 2011

У меня есть класс обслуживания, который я хочу пройти модульное тестирование. Служба вызывает метод класса репозитория для сохранения некоторых данных. Но прежде чем я вызову метод save, у меня есть метод validate, принадлежащий тестируемому классу обслуживания, который проверяет свойства класса, который будет сохранен в качестве параметра для метода сохранения в хранилище.

Я знаю, что для проверки того, что метод сохранения в хранилище вызывается, я должен смоделировать класс хранилища и настроить метод сохранения, но как проверить, что метод validate, принадлежащий тестируемому классу обслуживания, вызывается, когда модуль тестируете тестируемый метод, так как они принадлежат к одному и тому же классу?

Ответы [ 2 ]

0 голосов
/ 18 сентября 2011

Вы не можете ввести свой класс обслуживания в другой класс. Вот что вам нужно сделать.

  1. Создайте класс, который принимает экземпляр вашего класса обслуживания через открытый конструктор или публичное свойство.
  2. Смоделируйте тип хранилища, от которого зависит ваш класс обслуживания, чтобы сохранить сущность и сохранить ее в переменной.
  3. Настройка ожидания по методу сохранения макета репо.
  4. Смоделируйте ваш класс Service, но добавьте смоделированный репо в ваш mocked класс обслуживания (через свойство или constrctor).
  5. Настройка ожидания для метода Validate для класса с поддельными службами.
  6. Вставьте фиктивный класс обслуживания в класс, созданный на шаге 1, и теперь проверка не будет выполнена, если вы не оправдали ожидание.
0 голосов
/ 15 сентября 2011

Вы проверяете это косвенно, передавая неверные данные, которые заставляют метод Verify сообщить об ошибке.

Примеры:

  • Verify выдает исключение для недопустимого значения: убедитесь, что ваш модульный тест проверил, что это исключение было выдано
  • Verify возвращает false, а тестируемый метод не вызывает Save из-за этого: Утвердите в макете вашего хранилища, что не было вызова Save.
...