如何使用其他When语句在Cucumber中定义Given语句?

时间:2018-08-27 07:16:41

标签: cucumber cypress

我最近在Cypress上使用Cucumber的次数很多(实际上是在编写一个框架:picklejs.com)。我喜欢用简单的英语定义所有内容。

但是,我似乎找不到使用其他When语句定义我的Given语句的方法。我只能以编程方式定义它。

关于如何实现这一目标的任何想法?

Ex

GivenDef: I do 2 actions 
    When I do action 1
    And I do action 2

Scenario: I do 3 actions 
    Given I do 2 actions
    When I do action 3

2 个答案:

答案 0 :(得分:2)

您要从另一个方案中调用一个方案。小黄瓜不支持该功能。而且也不可能得到支持,因为这导致使用Gherkin作为编程语言。

那如何实现呢?以更高的抽象级别表达您的方案。执行步骤时,这种较高级别的方案将委派给一个或多个帮助程序库。就像@ joshua-wade所建议的那样。

是倒退吗?这取决于您的观点。如果将Gherkin用作用于指定测试的编程语言,则它看起来可能倒退。如果Gherkin是用业务语言记录应如何使用您的系统的示例的一种方式,那么倒不是那么回事。至少我不认为。

答案 1 :(得分:0)

纯粹是一个小黄瓜问题,我不认为您的要求是直接可能的。作为定义测试的一种方式,这是小黄瓜的局限性。

我已经看到它建议建立一个用于测试功能的帮助程序库,并在您的步骤定义中调用这些外部函数。这样,您可以执行以下操作:

小黄瓜:

Fruit_Project

步骤定义:

Scenario: I do 3 actions
    Given I do 2 actions
    When I do action 3

帮助程序库:

Given("I do 2 actions", () => {
    action1();
    action2();
});

When("I do action 3", () => {
    action3();
});

如果代码不完全正确,我深表歉意。我只在Ruby中使用了Cucumber。