【问题标题】:System.ArgumentException: 'No headers to add (Parameter 'header')'System.ArgumentException:'没有要添加的标题(参数'header')'
【发布时间】:2021-11-11 07:15:57
【问题描述】:

我正在尝试Specflow,这是我的方案

Scenario: Calculate user age from date of birth
    When I fill details
    | Name | DateOfBirth | 
    | John | 2000-01-01  | 
    | Mike | 2001-01-01  | 
    Then user age is calculated
    | Name | DateOfBirth | Age |
    | John | 2000-01-01  | 21  |
    | Mike | 2001-01-01  | 20  |

这是我的步骤

[Binding]
public class GetAgeFromDobSteps
{
    private IEnumerable<User> actualUsers = new Table().CreateSet<User>();

    [When(@"I fill details")]
    public void WhenIFillDetails(Table table)
    {
        actualUsers = table.CreateSet<User>();

        foreach (var actualUser in actualUsers)
        {
            actualUser.CalculateAge();
        }
    }

    [Then(@"user age is calculated")]
    public void ThenUserAgeIsCalculated(Table table)
    {
        var expectedUsers = table.CreateSet<User>();
        
        expectedUsers.Should().BeEquivalentTo(actualUsers);
    }
}

但是当我运行它时,private IEnumerable&lt;User&gt; actualUsers = new Table().CreateSet&lt;User&gt;();有一个错误

错误是System.ArgumentException: 'No headers to add (Parameter 'header')'

【问题讨论】:

  • 您实际上是在WhenIFillDetails 步骤中分配actualUsers。只需在声明时将字段 actualUsers 保留为未分配 - 只需:private IEnumerable&lt;User&gt; actualUsers;。发生异常是因为您试图从空表中创建一组值。
  • 为什么不像这样初始化:private IEnumerable&lt;User&gt; actualUsers = Enumerable.Empty&lt;User&gt;();?或者只是完全省略初始化,考虑到actualUsers 分配给WhenIFillDetails

标签: c# specflow


【解决方案1】:

new Table().CreateSet&lt;User&gt;(); 行假定它是从格式良好的特征文件解析的 Table 对象。在这种情况下,您只是在初始化一个没有行或列的新 Table 对象。这是错误的原因。

由于您使用actualUsers 作为断言的一部分,只需将其初始化为一个空集合:

public class GetAgeFromDobSteps
{
    private IEnumerable<User> actualUsers = Enumerable.Empty<User>();

这至少应该防止恼人的NullReferenceExceptions 被抛出,以及你断言actualUsers 的空集合的更糟糕的情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 2017-05-20
    • 2020-12-19
    相关资源
    最近更新 更多