当前位置: 首页 > 知识库问答 >
问题:

如何在Codename One中模拟服务器/http请求进行测试?

曾鸿振
2023-03-14

我想为我的Codename One应用程序编写功能测试。

为此,我需要能够模拟一些服务器响应,以便它们准确地返回我需要的特定测试。

我试图让发送HTTP请求的函数将ConnectionRequest作为参数,这样我可以注入一些东西来模拟网络延迟,然后用模拟响应调用回调。

然而,当我尝试在单元测试的prepare方法中注入ConnectionRequest的模拟时,它们仍然在应用程序启动后被注入,这对我的情况不起作用,因为我在应用程序启动时发送了HTTP请求。

是否可以在启动应用程序之前模拟ConnectionRequest或执行类似操作?

共有2个答案

莘康裕
2023-03-14

这是我最后做的事情。如果有人需要自动化测试的解决方法,我会发布这个。

  1. 编写一个名为HTTPRequest estInterface的接口,它公开了构造HTTP查询所需的方法
  2. 创建HTTPRequest estInterface的实现,称为sayHTTPRequest,它只是ConnectionRequest
  3. 的包装器
  4. 创建一个用于创建HTTPRequest的类,例如HTTPRequest estFactory,它有一个名为create的静态方法和一个名为setMock的方法。这个类在没有设置mock的情况下创建一个普通的HTTPRequest,在设置mock的情况下创建指定的mock。
  5. 将所有ConnectionRequest替换为HTTPRequest estFactory.create()
  6. 创建一个类SynalSetup,它有两个方法:setLaunize,它接受要html" target="_blank">执行的Runnable,以及init方法,它只运行Runnable
  7. 在start方法中,调用SignalSetup.init
  8. 现在在测试中,在准备方法中,我可以设置所需的模拟,并且应用程序在不运行自动化测试时会向实际服务器发送查询。

需要一些努力,但模拟后端的自动化测试带来了信心,我认为这绝对值得!

郎鹤龄
2023-03-14

你可以在模拟器中降低连接速度,这将模拟设备上的慢速连接,或者完全关闭连接以模拟没有互联网连接。在模拟器的Simulate下找到选项-

指向错误的URL以模拟404错误。

从服务器端代码返回不可读数据以模拟IOException或NullPointer异常。

执行此操作时,请确保网络监视器可见。您需要的大多数其他响应都可以在服务器端完成。

 类似资料:
  • 问题内容: 我正在尝试测试AngularJS服务,但似乎不起作用。 谁能解释为什么响应为空? 问题答案: 试试这个: 请求返回的响应对象在属性(docs)中具有响应数据。

  • 测试这种服务的基本策略是验证请求的内容(正确的URL),并确保我们模拟到服务中的数据通过正确的方法正确返回。 wikisearch.ts 我们的测试策略是检查服务是否已请求正确的网址,一旦我们回复了模拟数据,我们就要验证它是否返回相同的数据。

  • 我的目标是建立一个环境,让CircleCI在不同的浏览器中运行BrowserStack上的e2e测试。 我的测试假设有一个模拟服务器在运行。(例如,测试正在检查是否已对模拟服务器进行了某个调用。)

  • 问题内容: 我想为与HTTP相关的所有测试都包括一个Web服务器。它不需要非常复杂。我希望不要依赖在线。因此,我可以测试程序的某些选项。 启动服务器 使用适当的mime类型,响应代码等创建一些资源(URI)。 运行测试(最好也不必为每个测试都启动服务器) 关闭服务器。 此代码上的任何提示都将有所帮助。我用BaseHTTPServer尝试了几件事,但还没有成功。鼻子测试命令似乎无限期地等待。 谢谢你

  • 当我从模拟器上的应用程序调用服务时,我得到以下错误。

  • 我可以使用通过web服务请求授予的访问令牌,通过GoogleAPI访问网站管理员的网站列表,现在我想通过服务器到服务器请求来访问。 在授予服务器帐户访问列表的权限后,我不能使用下面的作用域正确使用setAssertionCreentials: 案例1 模拟用户帐户时: PHP客户端返回 案例2 在不模拟用户帐户的情况下,PHP客户端会得到一个空数组 问题 如何冒充用户使用服务器服务器谷歌为网站管理