Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 单元测试RESTAPI_Json_Unit Testing_Rest_Mocking - Fatal编程技术网

Json 单元测试RESTAPI

Json 单元测试RESTAPI,json,unit-testing,rest,mocking,Json,Unit Testing,Rest,Mocking,我有一些单元测试和模拟的经验。在我有限的经验中,我将使用这两种方法来测试服务层,例如,模拟(stubing?)数据库以消除依赖关系,并集中精力对业务逻辑进行单元测试 现在,我正在创建一个将使用RESTful web服务的包装器API实现。返回给我的json结果结构已经超出了我的控制范围,例如:Twitter。我只是简单地构建客户机以与他们的api接口。我不确定如何对json结果进行单元测试。现在我只是用静态json结构模拟http请求的结果。这确保了json到POJO的反序列化是正确的,但我担心

我有一些单元测试和模拟的经验。在我有限的经验中,我将使用这两种方法来测试服务层,例如,模拟(stubing?)数据库以消除依赖关系,并集中精力对业务逻辑进行单元测试

现在,我正在创建一个将使用RESTful web服务的包装器API实现。返回给我的json结果结构已经超出了我的控制范围,例如:Twitter。我只是简单地构建客户机以与他们的api接口。我不确定如何对json结果进行单元测试。现在我只是用静态json结构模拟http请求的结果。这确保了json到POJO的反序列化是正确的,但我担心API的变化。如果api结构发生变化怎么办?如果api现在返回“title”而明天返回“groovy_title”呢?我的单元测试不会发现这一点


但据我的理解,单元测试应该很快。以前我会模拟db,现在我模拟http,但我是否应该使用具体的http实现,以便立即收到api更改的通知?或者有更好的方法来处理这种情况吗?

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

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

注意,您可以不使用应用程序代码构建这些测试;i、 只需wget或curl并对结果进行一些分析

这方面的问题很多;不经意间:

您需要网络连接
慢一点
外部服务可能暂时关闭,即故障可能意味着不同的事情。
等等