gpt4 book ai didi

c# - SpecFlow 步骤的 bool 参数

转载 作者:太空狗 更新时间:2023-10-29 20:31:02 24 4
gpt4 key购买 nike

在 SpecFlow 中,我想检查步骤定义中是否存在字符串,目前我正在做一些笨拙的事情,比如这个人为的例子:

[Given(@"Foo ( bar)?")]
public void GivenFoo(string bar)
{
if (bar == " bar")
{
// do bar
}
}

但是,我想做这样的事情:

[Given(@"Foo ( bar)?")]
public void GivenFoo(bool bar)
{
if (bar)
{
// do bar
}
}

但我不知道如何实现,这是否可能,如果可能的话如何实现?

最佳答案

您绝对可以使用 StepArgumentTransformation 方法来做这类事情。您仍然需要编写解析器逻辑,但您可以将其隔离到一个方法中,该方法的唯一目的是执行该解析。

示例特征文件:

Feature: I win if I am Batman

Scenario: Happy
Given I am the Batman
Then I defeat the Joker

Scenario: Sad
Given I am not the Batman
Then I am defeated by the Joker

Specflow 绑定(bind) (C#):

[Binding]
public class IWinIfIAmBatmanFeature
{
private bool iAmBatman;

[StepArgumentTransformation(@"(am ?.*)")]
public bool AmToBool(string value)
{
return value == "am";
}

[Given(@"I (.*) the Batman")]
public void WhoAmI(bool amIBatman)
{
iAmBatman = amIBatman;
}

[StepArgumentTransformation(@"(defeat|am defeated by)")]
public bool WinLoseToBool(string value)
{
return value == "defeat";
}

[Then(@"I (.*) the Joker")]
public void SuccessCondition(bool value)
{
Assert.AreEqual(iAmBatman, value);
}
}

关键因素是 Given 子句中的正则表达式匹配与步骤参数转换匹配。所以在 I (.*) the Batman 中,如果捕获与 StepArgumentTransformation 参数中的正则表达式匹配,就像在 AmToBool 的属性中一样,那么这就是转换被使用。

关于c# - SpecFlow 步骤的 bool 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16195172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com