1

标题可能不是很清楚。我想到了以下示例:

Authenticator 对象使用凭据对用户进行身份验证。它返回一个 AuthResult 对象。此 AuthResult 对象表示身份验证成功或失败(如果是,则说明失败的原因,例如未找到用户名)。

我如何在测试中表达这个?'testShouldReturnAuthObjectWithStatusSuccessOnValidLogin'?

4

2 回答 2

5

testValidLoginIsSuccessfultestIsSuccessfulOnValidLogin对我来说似乎已经足够好了。

对于错误测试,您可以使用类似testGetsCustomMessageOnUserNotFound

您应该避免将实现细节放在方法名称中。

于 2009-08-11T00:11:49.163 回答
2

在没有看到这些测试是如何实施的情况下,从命名看来,观察结果是过度包装的。

如果此测试失败,您将不得不进行一些挖掘以了解是否是因为 (a) 没有返回 AuthResult 对象,或者 (b) 状态不是“成功”,此外,是否没有 AuthResult 因为 Authenticator 从来没有连接到数据库或执行其他一些必需的操作?

我将夹具命名为When_told_to_authenticate_with_valid_credentials,然后将断言分成两个不同的观察结果:
1. should_return_an_AuthResult
2. should_be_successful

如果您按照 Samuel 的正确建议模拟其他类,则可以进一步规定 Authenticator 的行为符合您的预期:
3. should_connect_to_the_database
4.等等。

于 2009-08-13T04:45:49.753 回答