如何使用 BDD 指定方程

How to specify an equation with BDD

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

现在,我需要用给定的 BDD 语法编写一个场景,并使用 Cucumber 编写测试来测试这个用 BDD 语法编写的场景。

为了写剧本,我想到了两个方案。

  1. 写一个包含方程中所有细节的场景,这样方程本身就可以从场景中推导出来。

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

选项1非常难写,但它抓住了其中的方程式。

选项 2 更容易理解,但方程本身在场景中的任何地方都没有定义。由于我的公司指示将所有规范编写为 BDD 场景,因此我没有其他地方可以在规范中编写等式。

哪个选项是正确的方法?或者我在这里遗漏了什么?

场景是具体示例,说明要求(或定义)。

大多数人将 "rules" 用于他们的场景 - 方程式定义、接受标准或行为背后的基本原理 - 放在功能文件顶部的简介中。

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

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.

我猜你的方程式可能比这更复杂,但希望它能给你启发。