как сформулировать результат действия в BDD / TDD - PullRequest
1 голос
/ 11 августа 2009

Название, вероятно, не очень понятно. Я имею в виду следующий пример:

объект Authenticator аутентифицирует пользователя с использованием учетных данных. Возвращает объект AuthResult. Этот объект AuthResult сообщает, что аутентификация прошла успешно или что она не удалась (и если да, то почему она не прошла, например, имя пользователя не найдено).

Как я могу сформулировать это в тесте? 'TestShouldReturnAuthObjectWithStatusSuccessOnValidLogin'?

Ответы [ 2 ]

5 голосов
/ 11 августа 2009

testValidLoginIsSuccessful или testIsSuccessfulOnValidLogin мне кажется достаточно хорошим.

Для тестов ошибок вы можете использовать что-то вроде testGetsCustomMessageOnUserNotFound

Не следует указывать детали реализации в имени метода.

2 голосов
/ 13 августа 2009

Не видя, как эти тесты реализованы, из названия видно, что наблюдения переполнены.

Если этот тест не пройден, вам нужно будет покопаться, чтобы узнать, так ли это, потому что (a) объект AuthResult не был возвращен или (b) состояние не было «успешным», и, кроме того, не было AuthResult, потому что Аутентификатор никогда не подключался к базе данных или выполнял какие-либо другие необходимые действия?

Я бы назвал осветитель When_told_to_authenticate_with_valid_credentials, а затем разделил утверждения на два разных наблюдения:
1. should_return_an_AuthResult
2. should_be_successful

Если вы издеваетесь над этими другими классами, как правильно предположил Сэмюэль, вы можете дополнительно указать, что Аутентификатор ведет себя так, как вы ожидаете:
3. should_connect_to_the_database
4. и т. Д.

...