如何用BDD指定方程式

Lah*_*ima 1 bdd cucumber

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

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

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

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

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

选项1很难编写,但它可以捕获其中的等式.

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

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

Lun*_*ore 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..
    ........
Run Code Online (Sandbox Code Playgroud)

等等.

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

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.
Run Code Online (Sandbox Code Playgroud)

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