【问题标题】:XUnit test to return a see if a list is being returnedXUnit测试返回一个看名单是否正在返回
【发布时间】:2020-05-21 09:39:47
【问题描述】:

我正在学习单元测试,我正在努力掌握如何测试以查看是否返回了一种类型的列表,不一定是列表的内容,而是确保它是一个正在返回的 LIST。

返回一个空的字符串列表

    public List<string> GetList()
    {
        var names = new List<string>();

        return names;
    }

我的测试,试图返回一个 typeofList:

    [Fact]
    public void GetListTest()
    {
        Assert.Equal(typeof(List<string>), GetList());
    }

【问题讨论】:

  • GetList().GetType()...
  • ...好吧,我不觉得自己很愚蠢。谢谢约翰尼,我想我该睡觉了:D

标签: c# tdd xunit


【解决方案1】:

这里

Assert.Equal(typeof(List<string>), GetList());

您正在测试字符串列表的类型是否与实际列表相同。您正在将苹果与橙子进行比较。你可以这样做:

Assert.Equal(typeof(List<string>), GetList().GetType());

此外,您可以构造复合逻辑条件并断言等于这些条件,这样您就可以在同一个测试中检查类型是否是预期的并且为空。

【讨论】:

    【解决方案2】:

    我相信这个包可以帮助你:

    https://github.com/shouldly/shouldly

    断言有时很难理解发生了什么。 Shouldly 使断言更容易。

    使用Shouldly,您可以进行如下检查:

    yourList.ShouldBeOfType<List<string>>();
    

    如果yourList 的类型匹配List&lt;string&gt;,它将返回true。如果没有,false。您也可以从 nuget 安装 Shouldly

    使用此包,您可以将 Assert.Equal 重构为:

    yourObject.yourProperty.ShouldBe("Some Stirng To Compare 'yourProperty;");
    

    和 int 的例子:

    yourInteger.ShouldBe(10);
    

    【讨论】:

    • 基本上它不是您问题的答案,但请考虑支持这个答案:)
    • 赞成它非常有用,毫无疑问我将来会使用它。非常感谢!
    • @michasaucer 你是对的,这不是一个实际的答案,但仍然值得支持。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2017-09-30
    • 1970-01-01
    • 2014-05-29
    • 2020-05-08
    • 2021-06-25
    相关资源
    最近更新 更多