代码之家  ›  专栏  ›  技术社区  ›  Lahiru Chandima

如何使用BDD指定方程式

  •  1
  • Lahiru Chandima  · 技术社区  · 7 年前

    假设有一个基于多个变量的值计算结果的功能,还有一个指定如何计算结果的方程。

    现在,我需要用when-then语法在BDD中编写一个场景,并使用cucumber编写测试,以测试用BDD语法编写的场景。

    对于编写场景,我可以想到两种选择。

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

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

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

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

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

    1 回复  |  直到 7 年前
        1
  •  8
  •   Lunivore    7 年前

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

    大多数人都会在功能文件顶部的简介中列出他们场景的“规则”——方程式定义、接受标准或行为背后的基本原理。

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

    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.
    

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