【问题标题】:Unit Testing REST API单元测试 REST API
【发布时间】:2019-05-06 00:14:34
【问题描述】:

我在单元测试和模拟方面有一些经验。在我有限的经验中,我会使用这两者来测试服务层,例如,模拟(存根?)数据库以消除依赖关系并专注于对业务逻辑进行单元测试。

现在我正在创建一个使用 RESTful Web 服务的包装 API 实现。发回给我的 json 结果结构不在我的手中,例如:Twitter。我只是在构建客户端以与他们的 api 交互。我不确定如何对 json 结果进行单元测试。现在我只是用静态 json 结构模拟 http 请求的结果。这可以确保将 json 反序列化到我的 pojos 是正确的,但我担心 API 更改。如果api结构发生变化怎么办?如果 api 当前返回“title”今天和“groovy_title”明天怎么办?我的单元测试不会捕捉到这一点。

根据我的理解 - 单元测试应该很快。以前我会模拟数据库,现在我在模拟 http,但我是否应该使用具体的 http 实现,以便立即通知我有重大的 api 更改?还是有更好的方法来处理这种情况?

【问题讨论】:

    标签: json unit-testing rest mocking


    【解决方案1】:

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

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

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

    这方面的问题很多;在我的脑海中浮现:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-26
      • 1970-01-01
      • 2011-11-14
      • 1970-01-01
      • 1970-01-01
      • 2014-09-14
      相关资源
      最近更新 更多