c# - 如何使用钩子(Hook)的参数化方法 - SpecFlow

标签 c# bdd specflow

在我们的项目中,我们有多个按 SKU ID 区分的 SKU。我们正在测试将 SKU 添加到数据库的不同场景。每个场景之后,数据库中都应该进行清理,以使用 AfterScenario Hook 删除该特定场景添加的 SKU。清理方法应接收每个场景添加的 SKU Id,以便仅删除这些数据。如何将参数传递给 AfterScenario 标记的清理方法(下面给出的需求示例)。

  [AfterScenario]
  public void Cleanup(string skuId)
  {
      //delete skuId from Db.
  }

最佳答案

最好通过将每个场景创建的 SKU 放入 ScenarioContext 中来跟踪它们。您可以将其引用作为步骤定义的构造函数参数。然后你可以在你的钩子(Hook)中访问它并删除它们:

public class SkuSteps
{
    private readonly ScenarioContext scenario;
    
    public SkuSteps(ScenarioContext scenario)
    {
        this.scenario = scenario;
    }
    
    [Given(@"a sku named ""(.*)"" exists")]
    public void GivenASkuNamedExists(string sku)
    {
        // create sku
        scenario.AddSku(sku);
    }
}

public static class ScenarioExtensions
{
    public static void AddSku(this ScenarioContext scenario, string sku)
    {
        var skus = scenario.GetSkus();
        
        skus.Add(sku);
    }
    
    public static List<string> GetSkus()
    {
        if (!scenario.ContainsKey("skus"))
        {
            scenario["skus"] = new List<string>();
        }
        
        return (List<string>)scenario["skus"];
    }
}
        
public class Hooks
{
    private readonly ScenarioContext scenario;

    public Hooks(ScenarioContext scenario)
    {
        this.scenario = scenario;
    }

    [AfterScenario]
    public void DeleteSkus()
    {
        var skusToDelete = scenario.GetSkus();
        
        // delete the skus
    }
}

关于c# - 如何使用钩子(Hook)的参数化方法 - SpecFlow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63065202/

相关文章:

c# - 检索具有 CLSID {00024500-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败 - 80080005

python - 如何在 python 中编写 cucumber 步骤定义

java - @After 和 @Before 注解不执行第二个方法

c# - SpecFlow - 生成错误 : Interface cannot be resolved

SpecFlow - 使用列表重复测试 X 次?

c# - RxUI ObservableAsPropertyHelper 不适用于 XAML 绑定(bind)

c# - 使用 .NET CORE 3.1 进行 SFTP 下载

c#二进制序列化到文件逐行或如何分离

unit-testing - 用于 BDD 单元测试的 cucumber.js?

visual-studio - Specflow 和 Visual Studio 2010 编码 UI 测试集成