【问题标题】:BDD Specflow: Handle DB Objects ReferencesBDD Specflow:处理数据库对象参考
【发布时间】:2014-10-14 07:16:24
【问题描述】:

我是 BDD 和 Specflow 的新手,想测试以下场景。

在我可以测试之前,我必须在数据库中创建一些数据。

  • 应用用户
  • 我需要参考应用程序用户的 NursingHome
  • 我需要参考 NursingHome 的员工

然后我向员工添加一个工作(从,到)。当我添加第二个作业时,应该执行一些测试。

这是我第一次尝试功能文件:

Feature: US01_AddEmploymentStatus
    It is not allowed that a employee has two jobs at the same time.
    A job can be closed.
    If a employee gets another job the old one is closed.


Background: 
    Given the following application user
        | FirstName   | LastName | UserName        | Password |
        | Application | User     | ApplicationUser | password |

    Given the following NursingHome
        | Name     | Street           | PostalCode | City       |
        | TestHome | Bahnhofstrasse 1 | 9020       | Klagenfurt |

    Given the following employee
        | FirstName | LastName   |
        | Max       | Mustermann |

Scenario: Employee changes his job.
    Given Max Mustermann has following job
        | From       | To   | State | QualificationId | NursingHomeId |
        | 01.01.2010 | null | 1     | 1               | ?             |
    And he get a new position
        | From       | To   | State | QualificationId | NursingHomeId |
        | 01.01.2014 | null | 1     | 2               | ?             |
    When I add the new postion
    Then the old one should be closed

如何处理引用?

【问题讨论】:

    标签: bdd specflow


    【解决方案1】:

    我能想到两种方法(假设我正确理解了您的域)。

    第一种方法是将“旧位置”信息保存在变量中(在您的步骤类中,或者在ScenarioContext.Current 或在specific context object 中),然后在步骤Then the old one should be closed 中使用保存的信息查找“旧位置”的状态

    第二种方法(我更喜欢)是使您的Then 步骤更加明确。所以改写成这样:

    Then the following positions should exist
    | From       | To         | State | QualificationId | NursingHomeId |
    | 01.01.2010 | 01.01.2014 | 1     | 1               | ?             |
    

    我最初的步骤使用了您在原始示例中使用的内容,但一旦我想要一个具有超过 1 个“旧位置”的场景,就会发现这具有限制性。也就是说,如果 max 有 2 份兼职工作,然后当他接手第三份工作时,只有一个被关闭了怎么办?

    【讨论】:

      【解决方案2】:

      在 Specflow Cook Book 中描述并解决了问题(章节:链接表行)。现在我已经掌握了如何在测试中将记录添加到数据库中并使用它。

      【讨论】:

        猜你喜欢
        • 2015-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多