gpt4 book ai didi

SpecFlow 辅助 - 从表创建实例

转载 作者:行者123 更新时间:2023-12-04 22:46:49 28 4
gpt4 key购买 nike

我正在尝试 specFlow 辅助,但不确定如何从表中创建类属性。
想象一下我有这门课:

public class Tracking 
{
public string Category { get; set; }
}

public class ODARequest
{
public string Title { get; set; }
public string Name { get; set; }
public Tracking Tracking { get; set; }
}

我的给定场景是下一个:
Scenario: Successfully create an account
Given I have entered the following data into the ODA form:
| Field | Value |
| Title | Mr |
| Name | Andy |
| Tracking Category | MDA |


public void GivenIHaveEnteredTheFollowingDataIntoTheODAForm(Table table)
{
var request = table.CreateInstance<ODARequest>();
}

不会填充 Tracking 属性。有谁知道怎么形容 Tracking.Category在这种情况下的表?

最佳答案

我一直无法找到一种让 specflow 将“CreateInstance”映射到非标准数据类型属性的方法。

但是,在这种情况下,您至少可以使用 StepArgumentTransformation如下:

    [Given(@"I have entered the following data into the ODA form:")]
public void GivenIHaveEnteredTheFollowingDataIntoTheODAForm(ODARequest request)
{
Assert.IsNotNull(request.Tracking);
}

[StepArgumentTransformation(@".*")]
public ODARequest StringToTracking(Table input)
{
return new ODARequest() {
Title = input.Rows.Single(row => row["Title"])["value"],
Name = input.Rows.Single(row => row["Name"])["value"],
Tracking = new Tracking()
{ Category = input.Rows.Single(row => row["Field"] == "Tracking Category")["Value"] }
};
}

通过一些工作,您可以整理 stepargumenttransformation 以接受每个参数作为可选参数(而不是“single()”被省略时抛出)。

我觉得确实应该有更好的方法来做到这一点,更像是您最初建议的代码。
希望这是有帮助的。

关于SpecFlow 辅助 - 从表创建实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22148543/

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