FluentAssertion无法比较可枚举的字符串

Ale*_*sky 2 .net c# tdd fluent-assertions

这段代码工作正常

    [Test]
    public void boo()
    {
        var collection = new[] { 1, 2, 3 };
        collection.Should().Equal(1, 2, 3);
    }
Run Code Online (Sandbox Code Playgroud)

但是,这失败了

    [Test]
    public void foo()
    {
        var collection = new[] { "1", "2", "3" };
        collection.Should().Equal("1", "2", "3");            
    }
Run Code Online (Sandbox Code Playgroud)

失败消息是:

'预期集合等于{1}因为2,但{"1","2","3"}包含2个项目太多.

这有什么不对?为什么无法比较可枚举的字符串?

原因,我的问题是 - 如何在foo()中处理案例?

dig*_*All 5

问题是第二个调用解决了以下重载:

public AndConstraint<TAssertions> Equal(IEnumerable expected, 
                                        string reason, 
                                        params object[] reasonArgs); 
Run Code Online (Sandbox Code Playgroud)

代替:

public AndConstraint<TAssertions> Equal(params object[] elements);
Run Code Online (Sandbox Code Playgroud)

要获得所需的结果,可以强制编译器使用正确的重载方法,例如:

collection.Should().Equal((object)"1", "2", "3");
Run Code Online (Sandbox Code Playgroud)