Моя первая реакция на ваш вопрос - звучит так, будто вы пытаетесь сделать слишком много за один тест.
Для простоты тестирования и простоты каждый тест должен проверять только одну вещь.Это то же самое, что и Принцип единой ответственности .Я часто нахожу программистов, пытающихся проверить несколько вещей в одном тесте, и у меня возникают всевозможные проблемы из-за этого.Таким образом, каждый из ваших методов модульного тестирования должен следовать этому потоку:
- Настройка отдельного сценария для теста.
- Выполните вызов тестируемого класса, чтобы вызвать тестируемый код.
- Проверьте поведение.
Так что в вашем случае я бы ожидал увидеть как минимум два теста.Тот, где getLoggedInUser()
возвращает пользователя, а другой, где getLoggedInUser()
выдает исключение.Таким образом, у вас не будет проблем с попыткой смоделировать различное поведение в макете.
Вторая мысль, которая приходит на ум, - это не заглушка.Вместо этого рассмотрите использование ожидаемого, потому что вы можете установить ряд ожиданий.Т.е. первый вызов возвращает пользователя, второй вызов вызывает исключение, третий вызов возвращает другого пользователя и т. Д.