我想我只需要一个朝正确方向的指针。
我正在通过其REST API测试应用程序服务器。我正在使用cucumberjs
当我调用特定方法时,一段时间后,应用程序将向URL发送通知。URL是可配置的,但仅在应用程序设置中 - 即我不能为每个调用提供回调URL。
在我的测试步骤中,我需要等待(并接收(该通知,然后从请求主体中提取一些数据以在以后的步骤中使用。
我该怎么做?我想我可以为每种情况设置一个Web服务器,将其传递给我的世界对象,并在此处更新一些通知的详细信息(可以将应用程序设置配置为我的Testing App上指出(。
但是我该如何等待(超时(收到通知?
(我应该找到的想法和指针,关于node.js软件包等的建议。都受到欢迎(
我正在执行类似的测试类型,我需要在基于可能的系统中触发某些东西,然后等待某些行为发生。为了实现这一目标,我正在使用Promise-Retry NPM软件包进行轮询(在需要时(进行轮询,然后在Cucumberj中配置默认超时时间高于正常情况(通常约为60秒(。我还使用配置使所有这些定时配置更容易管理。
至于您如何与系统进行交互,这取决于它是哪种类型的系统。如果您使用的是Azure,AWS或Firebase,则可以提供API客户。
如果您需要进行轮询,我会建议一个基于承诺的HTTP客户端,例如Flashheart,Axios或Superegent。Cucumberjs本身没有提供这些功能,但是很容易引入其他模块以与Cucumberjs集成。
如果您想直接接收通知,则可以使用某种基于云的事件中心(例如Azure Service Bus(。另外,如果您的测试与系统在同一网络上运行,则可以在Cucumberjs中轻松运行Express HTTP服务器。当您收到消息时,将它们推到数组上,然后具有一个步骤定义,以断言该数组包含预期的消息。