gpt4 book ai didi

java - 使用 Cucumber(和/或 Citrus)执行异步步骤

转载 作者:行者123 更新时间:2023-12-02 13:41:24 26 4
gpt4 key购买 nike

假设我有一个如下所示的测试(使用 cucumber )-

Scenario: Login successfully to Facebook
Given the user test exists
And user name and password is entered
When the login form is submitted
Then I expose a HTTP-Rest service to validate the user name and password
When I receive a validation success message
Then display the welcome message to the user

这里,当“提交登录表单”被调用时,它会将请求提交给HTTP REST服务,该服务会将用户名和密码传递给另一个HTTP Rest服务(这将被公开)由 Citrus 框架)使用 “我公开 HTTP-Rest 服务来验证用户名和密码” 这将验证数据并发送成功响应。因此,“提交登录表单”“我公开 HTTP-Rest 服务来验证用户名和密码”的步骤定义应异步执行。

你能帮我吗 - 我如何使用 cucumber (或/和柑橘)实现这一目标。

注意:我没有使用任何 stub 应用程序来公开 HTTP Rest 服务,以实现 “我公开 HTTP-Rest 服务来验证用户名和密码” ;我正在尝试使用 Citrus 框架公开该服务。

步骤定义是用java编写的。

最佳答案

首先,您需要在项目中设置 citrus-cucumber 扩展。然后您应该能够使用 @CitrusResource 注释将测试运行器实例注入(inject)您的步骤类:

@CitrusResource
private TestRunner runner;

您还可以注入(inject)应接收请求的 http 服务器实例。

@CitrusEndpoint(name = "userServer")
private HttpServer userServer;

然后您可以使用测试运行程序和服务器来接收请求并在步骤定义中发送响应:

@Then("^I expose a HTTP-Rest service to validate the user name and password$")
public void exposeHttpRestService() {
runner.http(http -> http.server(userServer)
.receive()
.post()
.payload("{\"username\": \"test\", \"password\": \"secret\"}"));

runner.http(http -> http.server(userServer)
.send()
.response(HttpStatus.OK));
}

登录表单应使用单独的线程在单独的步骤定义中提交,以创建异步特性:

@When("^the login form is submitted$")
public void submitForm() {
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.submit(() -> {
// do submit the form
});
}

关于java - 使用 Cucumber(和/或 Citrus)执行异步步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45942438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com