如何用BDD指定方程式

时间:2018-04-04 03:49:41

标签: cucumber bdd

假设有一个功能可以根据几个变量的值来计算结果,并且有一个方程式可以指定如何计算结果。

现在,我需要在BDD中编写一个场景,然后使用黄瓜进行语法和写测试来测试用BDD语法编写的场景。

为了编写场景,我可以想到两个选项。

  1. 写一个方案,捕捉方程中的所有细节,以便方程本身可以从方案中得出。

  2. 通过将各种值应用于方程式中的变量并编写预期结果来编写多个方案。

  3. 选项1很难编写,但它会捕获其中的等式。

    选项2更容易理解,但方程本身并未在方案中的任何位置定义。由于我的公司指示将所有规格都写成BDD情景,因此我无处可编写规范中的等式。

    哪种选择是正确的方法?或者我在这里缺少什么?

1 个答案:

答案 0 :(得分:8)

方案是说明要求(或定义)的具体示例。

大多数人在特征文件顶部的模糊中为他们的场景设置了“规则” - 等式定义,接受标准或行为背后的基本原理。

例如,如果我正在撰写康威的生命游戏,我可能会有一个这样的功能文件:

Feature: Rules for cells
  Cells die if there are fewer than 2 neighbours (lonely)
  Cells die if there are more than 3 neighbours (starving)
  Cells are born in empty spaces with 3 neighbours

Scenario: Lonely cells die
  Given a grid which looks like
    ........
    .X......
    ....XX..
    ........

因此,在您的情况下,您的要素文件可以包含等式的定义,并且场景是实际等式的具体示例。

Feature: My Equation
    x = 3y + max(z, u)

Scenario: z is bigger than u
    Given y = 3, z = 10 and u = 5
    When I calculate the result
    Then x should be 19.

我猜你的等式可能比这更复杂,但希望它能给你这个想法。