代码之家  ›  专栏  ›  技术社区  ›  Hemant Kumar

测试构建在RESTful web服务之上的应用程序

  •  2
  • Hemant Kumar  · 技术社区  · 14 年前

    RESTful web服务不是第三方的,而是与主应用程序(例如,电子商务应用程序和支付处理器;或社交网络和SSO系统)并行开发的。

    在这种系统中,验收(cucumber)或功能测试可以通过两种方式进行:

    1. 通过使用对象级模拟库模拟所有外部调用;例如 Mocha JMock .
    2. 通过在http级别进行模拟,使用诸如 webmock .
    3. 通过让主应用程序进行实际调用。

    “1”和“2”的问题是,如果底层应用程序的API发生更改,我的测试将继续通过,代码将实际中断,从而首先破坏测试的目的。

    问题是,我没办法 rollback 对于数据,测试套件在 teardown . 我正在并行地运行测试,因此如果我让实际的web服务运行,我将得到错误,比如“用户名被占用”之类的错误。

    2 回复  |  直到 14 年前
        1
  •  2
  •   fumanchu    14 年前

    将主应用程序置于开发或登台环境中。在相同的环境中启动web服务。让一个打给另一个。控制两个的设备数据。这不是嘲笑;你不会得到一个假的实现。

    任何一个 组件已在生产中升级。

        2
  •  0
  •   Steve Ross    14 年前

    我看不出在把你的客户从服务中隔离出来和真正地使用服务之间有一个中间地带。您可能因为服务改变了行为而错误地通过了测试,但您是否与从事该服务的开发团队签订了“合同”,要求他们对破坏负责?

    您可以尝试fakeweb并每天获取预期结果的新副本,这样您的测试就不会针对过时的数据响应运行。