我需要自动化一些web服务,为此我创建了一些方法,我想用Cucumber来实现,但是我不知道如何在下一步使用返回值。
所以,我有这个功能:
Feature: Create Client and place order
Scenario: Syntax
Given I create client type: "66"
And I create for client: "OUTPUTVALUEfromGiven" an account type "123"
And I create for client: "OUTPUTVALUEfromGiven" an account type "321"
And I want to place order for: "outputvalueFromAnd1"
我有这个步骤:
public class CreateClientSteps {
@Given("^I create client type: \"([^\"]*)\"$")
public static String iCreateClient(String clientType) {
String clientID = "";
System.out.println(clientType);
try {
clientID = util.createClient(clientType);
} catch (IOException e) {
e.printStackTrace();
}
return clientID;
}
@And("^I create for client: \"([^\"]*)\" an account type \"([^\"]*)\"$")
public static String createAccount(String clientID, String accountType) {
String orderID = "";
try {
orderID = util.createAccount(clientID,accountType);
} catch (IOException e) {
e.printStackTrace();
}
return orderID;
}
}
有什么方法可以一步到另一步使用返回的值?
谢谢大家!
我用另一种方式解决了这个问题,我知道这个问题是去年的,但也许将来有人会发现这个有用。
因此,我创建了一个“ClientsMap.java ”,用来存储最后几个句子的输出。例如:
public class ClientsMap {
private static ArrayListMultimap<Integer, String> multimapCardNumber = ArrayListMultimap.create();
...
public static void addCardNumber(String cardNumberValue) {
multimapCardNumber.put(multimapCardNumber.size(), cardNumberValue);
}
public static String returnSpecificCardNumber(int specificCardNumberPosition) {
String returnedCardNumber = multimapCardNumber.get(specificCardNumberPosition - 1).get(0);
return returnedCardNumber;
}
}
然后我创造了一些特定的关键字,用在句子中,比如:
And I want to make a card transaction with this parameters:
| XXX | 9999 |
| accountNumber | account1-client1 |
| cardNumber | cardNumber1 |
然后我有一个方法在后面检查关键字,如“cardNumber”,并检索卡片的位置,如下所示:
if (paramsList[i].startsWith("cardNumber")) {
String cardNumberPosition = paramsList[i].replaceAll("[^0-9]", "");
paramsList[i] = returnSpecificCardNumber(Integer.valueOf(cardNumberPosition));
}
在每个场景之后,不要忘记删除地图。
在步骤之间共享状态,这就是我解释您的问题的方式,不是通过检查返回值来完成的。它是通过在实例变量中设置值,然后在另一个步骤中读取该实例变量来完成的。
为了实现这一目标,我会将您的步骤更改为:
public class CreateClientSteps {
private String clientID;
private String orderID;
@Given("^I create client type: \"([^\"]*)\"$")
public void iCreateClient(String clientType) {
System.out.println(clientType);
try {
clientID = util.createClient(clientType);
} catch (IOException e) {
e.printStackTrace();
}
}
@And("^I create for client: \"([^\"]*)\" an account type \"([^\"]*)\"$")
public void createAccount(String clientID, String accountType) {
try {
orderID = util.createAccount(clientID, accountType);
} catch (IOException e) {
e.printStackTrace();
}
}
}
我改变的东西是
这是在同一类中的步骤之间共享状态的方式。还可以在不同类中的步骤之间共享状态。这有点复杂。询问您是否有兴趣。
我对Spring批处理框架相当陌生。 我在一个作业中创建了两个步骤(我们称之为步骤1和步骤2)。我想把它们并行运行。不仅如此,step2的IteamReader还应该使用step1的itemwriter。 我的第一个问题是,在Spring批量中是否有可能做到这一点?如果是,怎么做? 其次,如果这不可能,还有什么工作可以做呢? 谢了。
null 如果生成错误(文件不一致,文件不存在...),则不能执行 仅供参考,我使用的是没有XML配置的Spring批处理!只有注释:下面是我的作业配置类的样子:
问题内容: 我正在尝试使用Rundeck构建,启动和链接一组Docker容器。简而言之(对于不熟悉docker的用户),启动映像时,它将返回容器ID。我想在启动后续作业时使用此容器ID。 从命令行运行时,它看起来像这样(仅示例!): (请注意在第二个命令行中使用第一个返回值) 此时,将有两个容器在运行。第二个将通过该选项链接到第一个,并且可使用第二个容器内部的主机名 host1 对其进行寻址。公平
这个问题类似于如何运行github操作步骤,即使前一步失败,但仍然无法完成作业,但接受的答案对我没有帮助,因为它会创建一个额外的作业。 下面我要做的是 当测试应用程序(步骤2)通过时;测试清理步骤应该运行,github操作工作流返回成功 当测试应用程序(步骤2)失败时;应运行测试清洁、行动松弛和失败行动步骤。github操作工作流返回失败 我如何修复下面的代码来实现它?
问题内容: 好的,这就是我的for子手游戏代码,我唯一要做的就是让我的程序将其中一个单词随机化,这应该在方法中成功完成。但是我唯一的问题是让String变量 “ word” 返回到主类(在主类中的所有 “ word” 变量下面都有错误)。 如果我可以通过这种方法获得另一种帮助,或者从列表中产生随机单词的另一种方法,那将是惊人的。 问题答案: 在Java中,参数是通过值而不是引用传递的。因此,您不能
问题内容: 如何从异步函数返回值?我试图喜欢这个 它给了我, 问题答案: 您不能超出范围。为了获得预期的结果,您应该将其包装到异步IIFE中,即 样品。 有关更多信息 由于返回一个Promise,因此可以将其省略,如下所示: 然后像以前一样做