单元测试REST API

Mik*_*ike 8 rest json unit-testing mocking

我有一些单元测试和模拟的经验.在我有限的经验中,我将使用这两个来测试服务层,例如,模拟(stubbing?)数据库以消除依赖关系并专注于单元测试业务逻辑.

现在我正在创建一个将使用RESTful Web服务的包装器API实现.发回给我的json结果结构不在我手中,例如:Twitter.我只是构建客户端以与其api接口.我不确定如何对json结果进行单元测试.现在我只是用静态json结构模拟http请求的结果.这确保了json对我的pojos的反序列化是正确的,但我关注API的变化.如果api结构改变怎么办?如果api目前返回"title"并明天返回"groovy_title"怎么办?我的单元测试不会抓住那个.

从我的理解来看 - 单元测试应该很快.以前我会模拟数据库,现在我正在嘲笑http,但是我应该使用具体的http实现,所以我立即通知了一个突然的api更改?或者有更好的方法来解决这种情况吗?

hvg*_*des 4

我将继续做你正在做的事情并模拟你的代码和外部 API 之间的接口。正如您所指出的,这不会检测外部 API 中的更改。

您可以编写实际转到外部服务器来测试 API 更改的集成测试。我怀疑您已经将进行交互的代码分离到了自己的服务器/模块中,因此您可以从字面上 ping 外部 API,而不会被应用程序中超过 1 个抽象层所阻碍。

请注意,您可以在不使用应用程序代码的情况下构建这些测试;即只是 wget 或curl并对结果进行一些分析......

与此相关的问题有很多;我的头顶上浮现出:

您需要网络连接速度
较慢
外部服务可能会暂时关闭——即失败可能意味着不同的事情。
ETC。