当前位置: 首页 > 知识库问答 >
问题:

BDD specflow:处理DB对象引用

萧明贤
2023-03-14

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

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

    null
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

共有1个答案

杨慎之
2023-03-14

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

第一种方法是将“旧位置”信息保存在变量中(或者保存在steps类中,或者保存在ScenarioContext.Current中,或者保存在特定的上下文对象中),然后保存在step然后关闭旧位置您使用保存的信息来查找“旧位置”的状态

第二种方法(我更喜欢)是使then步骤更加明确。所以这样重写:

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

我在最初的例子中使用了一些步骤,但是当我想要一个超过1个“旧位置”的场景时,我发现这是限制性的。比如,如果马克斯有两份兼职工作,然后只有一份是关闭的,当他承担第三份时,怎么办?

 类似资料:
  • 本文向大家介绍jquery处理json对象,包括了jquery处理json对象的使用技巧和注意事项,需要的朋友参考一下 在服务器端的php脚本: jquery脚本: 返回到js后的处理: 第一种要用到varl转化的:是字符串的时候就要用eval转化成jquery对象(如下) 第二种:不需要转化的: 循环也有两种方法:

  • 在 Redis 的命令中,用于对键(key)进行处理的命令占了很大一部分, 而对于键所保存的值的类型(后简称“键的类型”),键能执行的命令又各不相同。 比如说, LPUSH 和 LLEN 只能用于列表键, 而 SADD 和 SRANDMEMBER 只能用于集合键, 等等。 另外一些命令, 比如 DEL 、 TTL 和 TYPE , 可以用于任何类型的键, 但是, 要正确实现这些命令, 必须为不同类

  • 问题内容: 这是我无法完成的考试问题。 如何通过仅在MyClass构造函数中编辑代码来获取以下Java代码以打印false? 不允许您覆盖equals方法或更改main方法中的任何代码。该代码必须在程序不崩溃的情况下运行。 根据我的研究,实例化类时不能将Java对象引用设置为null。所以我正式陷入了困境。 问题答案: 太难了! 或Paul Boddington的简化版本: 或是AJ Neufel

  • 目标 了解方法重载和重写 能够比较一个对象与另一个对象 了解如何和何时使用类变量和方法 重载方法 是时候了解一下 Person 类了。Person 现在比较有用,但没有达到应有的实用程度。我们首先通过重载Person 的方法来增强它。 创建两个具有相同名称和不同参数列表(即不同的参数数量或类型)的方法时,您就拥有了一个重载 方法。在运行时,JRE 基于传递给它的参数来决定调用您的重载方法的哪个变体

  • 我在AIX服务器上编译java源代码时出错,编码设置为IBM-1047。下面是错误, [INFO]2018-04-17 09:21:13,272[main]-编译输出消息错误:构造处理器对象时引发的异常:无效索引 [致命]2018-04-17 09:21:13273[main]-错误:构造处理器对象时引发异常:索引无效 如果我删除编码变量,并使用默认编码作为ISO-8859-1编译,我得到下面的错

  • 问题内容: 我正在尝试开发一个脱机HTML5应用程序,该应用程序应可在大多数现代浏览器(Chrome,Firefox,IE 9 +,Safari,Opera)中使用。由于Safari目前尚未支持IndexedDB,并且不建议使用WebSQL,因此我决定使用localStorage来存储用户生成的JavaScript对象和/ 放入或取出对象。但是,我发现这不能处理方法。这是带有简单方法的示例对象: