为 Google 地图 API 创建虚假测试响应
Create fake testing response for Google Maps API
我正在测试一些命中 Google 地图 API 的代码,当然,我实际上并不想命中他们的 API。基本上有两件事我想测试...
- 如果我传递一个有效地址,我会收到一个响应对象
lat
和 lng
属性。
- 如果我传递一个无效地址,我会收到
具有
error
属性的响应对象。
现在,当我击中他们的 API 时,测试正在运行,但正如我所说,我基本上想击中一个假的 API,所以我的测试不依赖于 Google' s API.
执行此操作并实际测试我的代码的好方法是什么?我不想为了通过考试而做某事。相反,我希望它是一个实际的测试。
这是我的一个测试用例,用于查找响应中的错误:
/** @test */
function an_error_attribute_is_returned_when_there_are_no_results()
{
$origin = '';
$destination = '';
$request = new GetDistanceRequest($origin, $destination);
$this->assertObjectHasAttribute('error', $request->receive());
}
您的应用程序与 google 地图之间的集成测试确实无可替代。
您可以轻松地对您的应用程序处理 google 地图在成功请求时返回的数据对象进行单元测试,并且您的代码可以处理来自 google 地图的错误响应。您可以复制从每个请求返回的响应,将其保存为文件,并将其作为固定装置提供给您的代码。这样做的问题是 google api 可能与您的测试数据不同步。你的测试可能通过了,然后当你去推送你的应用程序时,他们可能会改变他们的 api,你的应用程序将开始出错。
我可能会考虑的几件事是:
- google 改变他们的 API 的可能性有多大?他们有这方面的历史吗,他们是否致力于正式的版本控制方案?
- 是否可以获取一个测试帐户并保留您的两个集成测试。也许您的集成测试每天只有 运行 次?还是仅在主提交时?理想情况下,测试帐户将为您提供足够的配额,以便 运行 在每个构建和本地进行集成测试。
- 是否可以保存周期性的 google 回复?说每12小时??您可以有一个后台服务,它点击 google 映射以获得成功响应和错误响应,并将其保存到静态文件存储中。然后你的测试可以在每个 运行 之前把它拉下来。我觉得这可能是 API 请求 limits/rate 限制和新鲜度之间的妥协。但是需要最多的工作。
如果可行,没有什么比尽可能多地针对实际服务进行测试更好的了。
我正在测试一些命中 Google 地图 API 的代码,当然,我实际上并不想命中他们的 API。基本上有两件事我想测试...
- 如果我传递一个有效地址,我会收到一个响应对象
lat
和lng
属性。 - 如果我传递一个无效地址,我会收到
具有
error
属性的响应对象。
现在,当我击中他们的 API 时,测试正在运行,但正如我所说,我基本上想击中一个假的 API,所以我的测试不依赖于 Google' s API.
执行此操作并实际测试我的代码的好方法是什么?我不想为了通过考试而做某事。相反,我希望它是一个实际的测试。
这是我的一个测试用例,用于查找响应中的错误:
/** @test */
function an_error_attribute_is_returned_when_there_are_no_results()
{
$origin = '';
$destination = '';
$request = new GetDistanceRequest($origin, $destination);
$this->assertObjectHasAttribute('error', $request->receive());
}
您的应用程序与 google 地图之间的集成测试确实无可替代。
您可以轻松地对您的应用程序处理 google 地图在成功请求时返回的数据对象进行单元测试,并且您的代码可以处理来自 google 地图的错误响应。您可以复制从每个请求返回的响应,将其保存为文件,并将其作为固定装置提供给您的代码。这样做的问题是 google api 可能与您的测试数据不同步。你的测试可能通过了,然后当你去推送你的应用程序时,他们可能会改变他们的 api,你的应用程序将开始出错。
我可能会考虑的几件事是:
- google 改变他们的 API 的可能性有多大?他们有这方面的历史吗,他们是否致力于正式的版本控制方案?
- 是否可以获取一个测试帐户并保留您的两个集成测试。也许您的集成测试每天只有 运行 次?还是仅在主提交时?理想情况下,测试帐户将为您提供足够的配额,以便 运行 在每个构建和本地进行集成测试。
- 是否可以保存周期性的 google 回复?说每12小时??您可以有一个后台服务,它点击 google 映射以获得成功响应和错误响应,并将其保存到静态文件存储中。然后你的测试可以在每个 运行 之前把它拉下来。我觉得这可能是 API 请求 limits/rate 限制和新鲜度之间的妥协。但是需要最多的工作。
如果可行,没有什么比尽可能多地针对实际服务进行测试更好的了。