Макет репозитория во время тестирования контроллера API - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь познакомиться с использованием MOQ и насмешек в целом.Поэтому я хочу протестировать контроллер API, который использует сборку, которая служит хранилищем для получения / обновления данных и т. Д.например структура как это.

HomeController
    Index
        Repository.GetSomeData  (returns JSON object)

Этот класс репозитория имеет интерфейс, и это то, что вводится через класс запуска ядра .net.В этом случае метод GetSomeData выполняет ряд шагов, обращаясь к БД, а также читает файл из файловой системы, анализирует его и перемещает в другую папку.

Вопрос: Как можно«издевались» над репозиторием, не делая того, что делает «настоящий» объект?Все примеры, которые я вижу, являются простым сложением, возвращением строк и т. Д.

1 Ответ

0 голосов
/ 20 февраля 2019

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

По сути, вам необходимо сначала определить, какие методы будут использоваться.Затем вы должны определить соответствующие ответы, которые эти методы должны возвращать, основываясь на конкретном сценарии, который вы пытаетесь выполнить модульным тестированием.Затем вы создаете макет и добавляете заглушки для этих методов с этими ответами.

Весь смысл насмешки заключается в удалении переменных, поэтому вы намеренно пытаетесь добраться до «счастливого пути»: наборавнутренние ответы, которые переводят действие в состояние, в котором оно необходимо для выполнения конкретного теста.

...