标题可能不是很清楚。我想到了以下示例:
Authenticator 对象使用凭据对用户进行身份验证。它返回一个 AuthResult 对象。此 AuthResult 对象表示身份验证成功或失败(如果是,则说明失败的原因,例如未找到用户名)。
我如何在测试中表达这个?'testShouldReturnAuthObjectWithStatusSuccessOnValidLogin'?
标题可能不是很清楚。我想到了以下示例:
Authenticator 对象使用凭据对用户进行身份验证。它返回一个 AuthResult 对象。此 AuthResult 对象表示身份验证成功或失败(如果是,则说明失败的原因,例如未找到用户名)。
我如何在测试中表达这个?'testShouldReturnAuthObjectWithStatusSuccessOnValidLogin'?
testValidLoginIsSuccessful或testIsSuccessfulOnValidLogin对我来说似乎已经足够好了。
对于错误测试,您可以使用类似testGetsCustomMessageOnUserNotFound
您应该避免将实现细节放在方法名称中。
在没有看到这些测试是如何实施的情况下,从命名看来,观察结果是过度包装的。
如果此测试失败,您将不得不进行一些挖掘以了解是否是因为 (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.等等。