在测试外部服务时,如果该服务具有可重复的行为会很有帮助。
例如,如果您可以说对外部服务的特定查询将始终返回相同的可预测结果,那么您可以为此编写测试。
这并不总是可行的,因为您并不总是能够控制外部数据库包含的数据。
我会说最好的测试方法是按照它们的好坏程度降序排列的:
创建测试数据并验证
理想的方法是您的测试可以创建一些新的测试数据,然后运行服务以确认数据按预期返回。最后,它将通过删除创建的测试数据进行整理。
这种方法的好处是您可以更加确信外部更改不会破坏测试。您还可以通过插入适当的数据来测试服务的特定功能。
验证已知数据
如果外部服务不允许创建数据,则下一个最佳方法是测试您知道始终正确的结果。例如,如果您的服务正在进行身份验证,那么您将使用您知道服务上存在且不会更改的帐户进行检查。
这种方法依赖于不变的特定数据。在身份验证示例中,始终存在更改您用于测试的帐户的密码的风险,因此您的测试将失败。
验证正确的操作
最差的解决方案是简单地使用有效参数调用服务并确保不返回错误代码。
您可以确认服务已启动并正常工作,但您对返回的数据的有效性没有信心。
非功能测试
除了测试工作服务之外,您还可能希望测试失败案例,例如服务关闭或无法联系。您如何处理外部数据库中的故障?数据库重新上线后是否正常恢复?