Java Cucumber存储步骤

时间:2017-04-05 09:06:26

标签: java testing cucumber

我正在写黄瓜测试,我遇到了一些困难:

我有一个创建dto并使用save client保存它的步骤,它再次返回dto我需要使用返回的dto进行其他步骤但不知道如何制作它。

以下是代码的外观:

commonExpenseCreationSteps.java

@Given("^new \"([^\"]*)\" expense with type \"([^"]*)\"$")
public ExpenseDTO newExpense(String description, String expenseType) throws Throwable {
    ExpenseDTO expenseDTO = new ExpenseDTO();
    expenseDTO.setDefaultPurpose(description);
    expenseDTO.setExpenseType(expenseType);
    return expenseSaveClient.save(expenseDTO);
}

expenseTransactionsSendSteps.java

@Given("^send expense for Approval$")
public void sendExpenseForApproval() throws InterruptedException {
    expenseTransactionSendClient.sendToApproval(expenseDTO);
}

如何存储一步返回的值并在另一个中使用它在这种情况下我在newExpense方法中返回ExpenseDTO但我需要在sendExpenseForApproval中使用它但不知道如何操作它? / p>

2 个答案:

答案 0 :(得分:0)

在您的胶水代码之外创建expenseDTO对象,可能在您的stepdef类构造函数中。

 $(".qty").on("keyup", function () {
    var $this = $(this);
    $tr = $this.closest('tr');
    qty_val = $this.val();
    unitprice_val = $tr.find('.unit_price').val();
    amount = qty_val*unitprice_val;
    $(this).closest('tr').find('.pricecalc').attr("value", amount);
    //$('#total_amount').val(amount);
    //$(this).find('.total_amount').attr("value",amount);
    //$(this).find('.total_discount').val(amount);
 });

答案 1 :(得分:0)

在同一个类中的步骤之间共享状态的方法是使用实​​例变量。一步设置值,然后在后面的步骤中使用该值。

在具有两个或更多步骤类的步骤之间共享状态的方法是使用依赖注入。

我写了一篇blog post来描述如何使用PicoContainer完成它。