Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当条件满足时,如何为多部分实现SpecFlow钩子?_C#_Bdd_Specflow - Fatal编程技术网

C# 当条件满足时,如何为多部分实现SpecFlow钩子?

C# 当条件满足时,如何为多部分实现SpecFlow钩子?,c#,bdd,specflow,C#,Bdd,Specflow,我正在为我们的企业开发自动支付处理服务。我们正在尝试实现规范流,我们已经成功地为1当条件 Scenario Outline: Stub matches NEXT oldest outstanding bill Given I have a group with the following bills: | Id | Due Date | Status | Amount Due | | Bill A | 9/14/20

我正在为我们的企业开发自动支付处理服务。我们正在尝试实现规范流,我们已经成功地为1当条件

Scenario Outline: Stub matches NEXT oldest outstanding bill
    Given I have a group with the following bills:
        | Id     | Due Date   | Status               | Amount Due |
        | Bill A | 9/14/2011  | <Oldest Bill Status> | 1100.00    |
        | Bill B | 10/14/2011 | Unpaid               | 1200.00    |
        | Bill C | 11/14/2011 | Unpaid               | 1300.00    |
    When a stub is received that matches 'Bill B'
            And the Payment Amount is <Payment Amount>
    Then the allocation result should <Allocation Result>
            And Review should <Review>
Examples:
    | Oldest Bill Status | Allocation Result | Review       | Payment Amount |
    | Reconciled         | Allocate to Bill  | not required | 1200.00        |

[When(@"a stub is received that matches '(.*)'")]
        public void WhenAStubIsReceivedThatMatches(string billKeyName)
        {
           // Method
            }
场景大纲:存根匹配下一个最旧的未付票据
鉴于我有一个小组,有以下账单:
|Id |到期日|状态|到期金额|
|法案A | 9/14/2011 | | 1100.00|
|账单B | 2011年10月14日|未付| 1200.00|
|账单C | 2011年11月14日|未付| 1300.00|
收到与“账单B”匹配的存根时
付款金额为
那么分配结果应该是
而检讨应
示例:
|最早票据状态|分配结果|审核|支付金额|
|已对账|分配到账单|不需要| 1200.00|
[当(@“接收到与“(.*)”匹配的存根时]]
当TubIsReceivedThatMatches(字符串billKeyName)时公共无效
{
//方法
}

在执行结果步骤之前,我不知道如何更改钩子来处理这两个条件。

有多个When子句被分解。。。我想你可以理解(并解释)为什么,因为你问了这个问题。把几个动作放在一起是相当困难的,因为它们相互依赖

试着用一个简单的When子句来编写规范,而不是编写不同的场景来描述不同的交互方式

因此,对于您的场景,如果您愿意的话,尝试找出从给定状态到然后状态发生的重要状态转换是什么

这是一个我发现对编写场景有用的小诀窍

  • 首先写一个简短的标题
  • 然后开始填写步骤。你最终会得到什么?需要什么资产
  • 然后写下When步骤。我怎么去那个州
  • 然后写下给定的步骤。在执行When子句之前需要什么上下文
  • 现在修改标题,看看您是否提出了需要考虑的其他场景

几周前,我参加了Gjoko Adzic的一个课程,学到了很多这样的技巧

当子句被分解时,有多个When子句。。。我想你可以理解(并解释)为什么,因为你问了这个问题。把几个动作放在一起是相当困难的,因为它们相互依赖

试着用一个简单的When子句来编写规范,而不是编写不同的场景来描述不同的交互方式

因此,对于您的场景,如果您愿意的话,尝试找出从给定状态到然后状态发生的重要状态转换是什么

这是一个我发现对编写场景有用的小诀窍

  • 首先写一个简短的标题
  • 然后开始填写步骤。你最终会得到什么?需要什么资产
  • 然后写下When步骤。我怎么去那个州
  • 然后写下给定的步骤。在执行When子句之前需要什么上下文
  • 现在修改标题,看看您是否提出了需要考虑的其他场景

几周前,我参加了Gjoko Adzic的一个课程,学到了很多这样的技巧

最好的做法是有一个When语句

一些选择包括:

 When a stub is received that matches 'Bill B' for <Payment Amount>

给定…等。。。
我收到了一个存根,它与
当我收到存根时

。。。因为存根本身不是被测试的对象,它是背景数据,可以合理地创建为givens的一部分。

最佳实践是在语句中使用一个When

一些选择包括:

 When a stub is received that matches 'Bill B' for <Payment Amount>

给定…等。。。
我收到了一个存根,它与
当我收到存根时

。。。因为存根本身不是被测试的对象,它是背景数据,可以合理地创建为givens的一部分。

我想你可以理解(并解释)为什么-实际上,除了可能无法编写代码之外,我不确定为什么。这似乎是我们的业务规则所要求的矩阵对矩阵比较的有效解决方案。重写给定的when将其限制为单个when会降低我们重用代码的能力和功能文件的可读性。我可以用when子句的多部分reg-ex来实现这一点,但Cumber博客认为这是一种反模式。@Chad我所指的是代码的复杂性。矩阵到矩阵的规则听起来很复杂-小黄瓜表能帮你吗?检查场景大纲例如()付款金额实际上在示例表中(以及结果和审核状态。业务规则很复杂,这是定义它们的最简单方法。我的想法是,我可以使用When钩子设置请求,然后在When之后执行请求,然后在不需要支付金额的测试中重用When设置。这不可能吗?我用如果这有帮助的话,再多了解一下场景的背景。哦,天哪,这看起来很复杂。但正如我所见,账单A和C似乎没有发挥作用。难道你们不能只写一个场景,将“账单B”与“当收到“账单B”的存根并收到付款金额”这样的When语句匹配吗?我想你能理解(并解释)为什么-事实上,除了可能无法编码之外,我不确定为什么。这似乎是一个有效的解决方案,可以根据我们的业务规则进行矩阵间比较。重写给定的时间,然后将其限制为单个时间,这会降低我们重用代码的能力和功能文件的可读性。我可以使用
 Given ...etc...
 And I have a stub is received that matches 'Bill B' for <Payment Amount>
 When I receive the stub