【问题标题】:Dependencies between Features功能之间的依赖关系
【发布时间】:2015-10-07 19:20:40
【问题描述】:

我们第一次尝试为新应用程序编写一些 Gherkin 规范,但我不确定如何处理看似相互依赖的功能。

本质上,我们有一个功能CreateADoor,它实际上用作另外两个功能BuildAHouseBuildAShed的一部分。

CreateADoor 功能在验证等方面相对复杂。这就是为什么我们将其作为一个单独的功能提出(以避免重复)。问题是此功能的场景的结果取决于调用它们的上下文(我新建的门应该在房子还是棚子上)。

我真正认为解决这个问题的唯一方法是摆脱CreateADoor,并在BuildAHouseBuildAShed 中复制其场景。在这种特定情况下,这将是(几乎)可以忍受的,但是CreateADoor 需要 10 个场景来指定它并被 10 个不同的功能使用的情况呢?将 10 个场景分解为 100 个似乎并不好,但我现在看不到其他选择。

任何人都可以提出一种不同的方法来避免这种场景爆炸吗?

【问题讨论】:

    标签: bdd specifications gherkin


    【解决方案1】:

    理想情况下,您不应该创建这些依赖项,但是如果创建门是建造房屋的一部分,那么建造房屋功能应该创建门作为其设置的一部分,而不是重复使用该功能来测试创建门。

    这可能看起来像这样:

    Given I have created a house door
    When I create a house
    Then I should be able to live in it
    

    并且创建门的逻辑应该在 Given 步骤后面的代码中。此逻辑可能与您在测试中创建门时实际发生的情况大不相同。

    如果您不能将这样的事情分开,那么我过去做过的一件事是让Given 步骤后面的代码调用CreateADoor 功能中的其他步骤,这样代码就不会重复,但现有的步骤被重用。这并不理想,但实际上有时这是必要的。

    【讨论】:

    • 从文档/规范的角度来看,我更关心事情。围绕创建门的规范(有效/无效示例等)相对复杂,我需要在某处进行定义
    • 我建议保留创建门的规范,然后 1/ 创建门作为创建具有完全独立代码的房屋的设置(不需要验证等),或者2/ 在创建房屋场景中重用创建门场景中的步骤,以便为房屋创建门
    猜你喜欢
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    相关资源
    最近更新 更多