Прежде всего, если вы говорите с реальным веб-приложением или реальной базой данных, вы не проводите модульное тестирование, вы проводите интеграционное тестирование.
Что именно вы пытаетесь проверить здесь?
Это:
- Если ввести неверное имя пользователя и / или пароль, пользователь не будет входить в систему?
- Если ввести правильное имя пользователя и / или пароль, пользователь войдет в систему?
- Что учетная запись действительно находится в Active Directory? Что это докажет? Что твой ИТ-администратор сделал свою работу?
Помните, что вы не должны утверждать факты, вы должны утверждать поведение. Таким образом, вместо того, чтобы пытаться проверить, находится ли конкретная учетная запись в AD, убедитесь, что при вводе правильного имени пользователя и пароля ваш код ведет себя так, как ожидалось, а при неправильном имени пользователя или пароле он также ведет себя как ожидалось, и вы должны попытаться сделать это без участия Active Directory.
В первых двух случаях, приведенных выше, задействовано несколько фрагментов кода:
- Код, который принимает имя пользователя и пароль
- Код, который пытается найти существующую учетную запись с этим именем пользователя и паролем
- Код, который хранит факт "сейчас вошел в систему"
- Код, который отвечает на ошибку «неверное имя пользователя или пароль»
Итак, вы проверяете, работает ли ваша база данных? Или что ваш код, который проверяет действительность, работает?
Я бы подделал код, который извлекает существующую учетную запись, и заставлял ее отвечать «вот данные учетной записи» в одном модульном тесте и «нет подходящей учетной записи» в другой, чтобы убедиться, что ваш код входа отвечает правильно , либо войдя в систему пользователя, либо ответив с ошибкой, а затем утверждать против этого.
Обратите внимание, что в какой-то момент вам также необходимо провести реальный интеграционный тест, поскольку вы хотите убедиться, что ваш код, который запрашивает Active Directory, работает правильно, но вы должны тестировать как можно больше поведения, не задействуя Active Directory, он будет сделать ваши тесты более удобочитаемыми (все в одном месте), более удобными в обслуживании (не нужно входить в Active Directory для создания новых тестовых данных) и более надежными (не удивительно, когда не получится, если кто-то испортил Active Directory, сеть flaky, пользователь был удален, программное обеспечение обновлено, поэтому реагирует по-разному и т. д.).
Я видел слишком много «модульных тестов», которые не выполняются из-за внешних зависимостей, и я советую постараться свести их к минимуму, в идеале их вообще не должно быть. Для ваших модульных тестов то есть.