You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cucumber中如何在AuthorizationOperation与UserOperation间传递Token?

问题解答

核心结论

可以直接把token从AuthorizationOperation.java传递到UserOperation.java,但不能通过new ScenarioContext()实现——每次new都会生成全新的上下文实例,和你之前在AuthorizationSteps里用Pico容器管理的实例不是同一个,所以拿不到已存储的token。

问题根源

你在两个Operation类里直接new ScenarioContext(),等于创建了和Steps层完全独立的上下文对象,自然读不到之前存的token值。

可行实现方案

方案1:依赖注入共享ScenarioContext实例

让Pico容器把同一个ScenarioContext实例注入到两个Operation类中,而非自行创建:

// AuthorizationOperation.java
private final ScenarioContext scenarioContext;

// 通过构造方法注入容器管理的ScenarioContext
public AuthorizationOperation(ScenarioContext scenarioContext) {
    this.scenarioContext = scenarioContext;
}

public void obtainAndSaveToken() {
    String token = getToken(); // 你的token获取逻辑
    scenarioContext.setContext("token", token);
}
// UserOperation.java
private final ScenarioContext scenarioContext;

// 同样注入同一个ScenarioContext实例
public UserOperation(ScenarioContext scenarioContext) {
    this.scenarioContext = scenarioContext;
}

public void executeWithToken() {
    String token = (String) scenarioContext.getContext("token");
    // 这里直接使用token执行业务逻辑
}

这样两个Operation共享同一个上下文实例,就能直接读取到token。

方案2:直接通过方法参数传递token

如果不想依赖上下文容器,可简化为直接传递参数:

// AuthorizationOperation.java
public String getToken() {
    return getToken(); // 返回获取到的token
}
// 借助Steps层中转(比如在AuthorizationSteps或单独的流程类中)
private final AuthorizationOperation authOp;
private final UserOperation userOp;

// 构造注入两个Operation
public YourFlowSteps(AuthorizationOperation authOp, UserOperation userOp) {
    this.authOp = authOp;
    this.userOp = userOp;
}

public void runAuthAndUserFlow() {
    String token = authOp.getToken();
    userOp.doBusinessWithToken(token); // 直接把token传给UserOperation的方法
}

这种方式更直接,无需依赖上下文,适合简单的流程场景。

补充:原方案能运行的原因

你之前在AuthorizationSteps和UserSteps中使用的是Pico容器注入的同一个ScenarioContext实例,存和读的是同一个上下文,所以能拿到token;而自行new的实例和容器管理的实例完全无关,自然返回null。

内容的提问来源于stack exchange,提问作者Jack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 05:39:59