在客户机-服务器体系结构中,当模拟客户机和模拟服务器时,最好的方法是什么。我理解单元测试应该只测试给定的类,每个依赖对象都被模拟,而集成测试应该测试整个特性。当谈到API调用时,我感到困惑的是,我应该模拟用于API调用的客户机,还是应该使用一些服务器模拟框架,让真正的客户机调用模拟服务器。
在这种情况下,我应该(不是强制性的)测试我是否使用了正确的API url、正确的方法以及在查询参数或请求正文中传递的某些值。在客户端嘲笑的情况下,如果给定的参数(路径、方法、请求体)通过,并考虑测试成功,我可以简单地“验证”。如果要模拟服务器,则需要在模拟服务器上创建一点处理,以检查路径、方法和请求体是否正确传递并返回值。在这种情况下,服务器响应是唯一可以用来衡量测试是否成功的东西(如果未收到所需数据,则发送500)。
根据您的经验,在客户机-服务器体系结构中测试集成测试调用的正确方法是什么?如果我们照本宣科,那么应该使用服务器嘲笑,但是在上面提到的情况下这可行吗?对于单元测试,显然应该使用模拟。
更新:为了避免混淆:我正在创建一个依赖于我无法控制的公共可用服务的客户端。因此,我正在测试客户机是否正常工作,并将重点放在客户机上。这个问题与我应该(在集成测试中)模拟负责远程连接的客户机对象(在我的例子中是来自Play framework的WSClient)有关,还是应该使用一些服务器模拟(比如okhttp模拟web服务器)。
另一个更新:大多数人建议应该遵循简单的经验法则:如果这些是单元测试,则模拟客户端;如果这些是集成测试,则使用模拟服务器。现在,我对这种情况很好奇:我有一个依赖于类B的类a,而类B有一个负责远程调用的客户机对象。如果我要为类A编写单元测试,我应该模仿类B,这很好。但是,如果我正在为类A进行集成测试,是否可以在类B中模拟客户机对象并“验证”是否向其传递了正确的参数(路径、方法和请求体),或者,为了完整性起见,即使模拟客户机对象更容易,我也应该运行模拟服务器。在这种情况下,我不会测试超时和低级网络错误。或者,在这种情况下,集成测试的整个要点也应该是测试网络连接。
您需要:
我正在用两个应用程序做project:android应用程序(客户端)和rest服务(服务器)。我的android应用程序消耗了我的rest服务。 这两个应用程序都是单独测试的,以确保它们按照预期完成业务。在服务器测试期间,我准备请求并检查服务器响应。在客户机测试期间,我设置了一个简单的http模拟服务器,并针对不同的模拟响应测试客户机的请求。 现在,这个技术很管用。它给了我一种我喜欢的灵活性。我
本文向大家介绍java模拟客户端向服务器上传文件,包括了java模拟客户端向服务器上传文件的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java客户端向服务器上传文件的具体代码,供大家参考,具体内容如下 先来了解一下客户端与服务器Tcp通信的基本步骤: 服务器端先启动,然后启动客户端向服务器端发送数据。 服务器端收到客户端发送的数据,服务器端会响应应客户端,向客户端发送响应结果。
在使用square改进框架时,模拟服务器进行测试的最佳方法是什么。 可能的方式: > 创建一个新的改装客户端,并在RestAdapter中设置它。Builder(). setClient().这包括解析请求对象,并将json作为响应对象返回。 将这个带注释的接口实现为一个模拟类,并使用它代替RestAdapter提供的版本。create()(不会测试gson序列化) ? 理想情况下,我想让mock
问题内容: 我有一个ParseService,我想对其进行模拟以测试使用它的所有控制器,我一直在阅读有关茉莉花间谍的信息,但对我来说仍然不清楚。谁能给我一个关于如何模拟定制服务并在Controller测试中使用它的示例吗? 现在,我有一个使用服务插入书的控制器: 服务是这样的: 到目前为止,我的测试如下所示: 现在测试失败: 我做错了什么? 问题答案: 我做错的是没有在beforeEach中将模拟
我正在尝试使用ExpressJS和Coffeescript制作一个网络应用程序,它从亚马逊、LastFM和必应的网络应用程序接口中提取数据。 用户可以从特定乐队请求特定专辑的价格、即将到来的音乐会时间和乐队的位置等数据,等等...诸如此类的东西。 我的问题是:我应该使用和在客户端进行这些API调用,还是应该在服务器端进行?我已经完成了客户端请求;我如何从服务器端进行API调用 我只想知道最佳实践是
假设应用程序依赖于外部服务器上的REST服务,http://otherserver.com.为了测试,我想在JUnit环境中模拟外部rest调用(通过Wiremck)。启动单独的服务器会消耗时间,而且不容易。使用Wiremck规则看起来是正确的方向。创建模拟控制器并不是一种优雅的方式,因为Wiremck是可用的。 例如get(" http://other server . com/service