我在单元测试和模拟方面有一些经验。在我有限的经验中,我会使用这两者来测试服务层,例如,模拟(存根?)数据库以消除依赖性并集中于对业务逻辑进行单元测试。
现在,我正在创建一个将使用 RESTful Web 服务的包装 API 实现。发回给我的json结果结构不在我手中,例如:Twitter。我只是构建客户端来与他们的 api 交互。我不确定如何对 json 结果进行单元测试。现在我只是用静态 json 结构来模拟 http 请求的结果。这确保了 json 到我的 pojo 的反序列化是正确的,但我担心 API 更改。如果api结构发生变化怎么办?如果 API 今天返回“title”,明天返回“groovy_title”怎么办?我的单元测试无法捕捉到这一点。
但根据我的理解 - 单元测试应该很快。以前我会嘲笑数据库,现在我会嘲笑 http,但我实际上应该使用具体的 http 实现,以便立即收到有关 API 重大更改的通知吗?或者有更好的方法来处理这种情况吗?
我将继续做你正在做的事情并模拟你的代码和外部 API 之间的接口。正如您所指出的,这不会检测外部 API 中的更改。
你可以写一体化实际访问外部服务器以测试 API 更改的测试。我怀疑您已经将进行交互的代码分离到了自己的服务器/模块中,因此您可以从字面上 ping 外部 API,而不会被应用程序中超过 1 个抽象层所阻碍。
请注意,您可以在不使用应用程序代码的情况下构建这些测试;即只是 wget 或curl并对结果进行一些分析......
与此相关的问题有很多;我的头顶上浮现出:
您需要网络连接
Slower
外部服务可能会暂时关闭——即失败可能意味着不同的事情。
etc.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)