让我们说;我正在开发一个Web应用程序,它针对某些事情与RESTful Web服务进行通信。
RESTful Web服务不是第三方,而是与主应用程序并行开发(一个很好的例子,电子商务应用程序和支付处理器;或社交网络和SSO系统)。
在这样的系统中,验收(黄瓜)或功能测试可以通过两种方式完成:
Mocha
或JMock
。 webmock
。#1和#2的问题是,如果底层应用程序的API发生变化;我的测试将继续传递,代码将实际中断,从而首先击败测试的目的。
#3的问题是,我无法像rollback
那样执行teardown
数据。我正在平行运行我的测试,因此如果我让实际的Web服务出现,我将收到诸如“用户名”或其他内容的错误。
所以社区的问题是,最佳做法是什么?
答案 0 :(得分:2)
将主应用程序置于开发或登台环境中。在同一环境中启动Web服务。让一个人打电话给对方。控制两者的夹具数据。那不是嘲笑;你没有得到假的实现。
这不仅可以让您对实际稳定性更有信心,还可以让您在暂存环境中测试性能,还可以让您针对各种版本的Web服务测试主应用程序。重要的是,当您的Web服务发生变化时,您的测试不会做错事,但更重要的是您的主应用程序也不会这样做。在 组件在生产中升级之前,你真的想要自信地知道这一点。
答案 1 :(得分:0)
我看不出在将客户端与服务隔离并实际访问服务之间存在中间地带。您可能错误地通过了测试,因为服务已经改变了行为,但是您是否与开发团队签订了一份“合同”,让他们负责破坏?
您可以尝试使用fakeweb并每天获得预期结果的新副本,这样您的测试就不会针对过时的数据响应运行。