小编YMM*_*YMM的帖子

Fluent Assertions 中的 Satisfy() 不适用于类对象集合

我有一堂课:

public class TestClass
{
    public int Id { get; set; }
    
    public int CampusId { get; set; }
    
    public int CurrentStudentCount { get; set; }
    
    public int MaxStudentCount { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

以及该类的对象集合:

var collection = new[]
    {
        new TestClass
        {
            Id = 55,
            CampusId = 38,
            CurrentStudentCount = 1,
            MaxStudentCount = 2
        },
        new TestClass
        {
            Id = 127,
            CampusId = 38,
            CurrentStudentCount = 2,
            MaxStudentCount = 2
        },
        new TestClass
        {
            Id = 126,
            CampusId = …
Run Code Online (Sandbox Code Playgroud)

c# assertion fluent-assertions

9
推荐指数
2
解决办法
6457
查看次数

使用Fluent Assertions库的多个断言

似乎Fluent Assertions在NUnit的Assert.Multiple块中不起作用:

Assert.Multiple(() =>
    {
        1.Should().Be(2);
        3.Should().Be(4);
    });
Run Code Online (Sandbox Code Playgroud)

运行此代码时,测试在第一次断言后立即失败,因此第二个断言甚至没有执行.

但是,如果我使用NUnit的本机断言,我会得到我想要的结果:

Assert.Multiple(() =>
    {
        Assert.That(1, Is.EqualTo(2));
        Assert.That(3, Is.EqualTo(4));
    });
Run Code Online (Sandbox Code Playgroud)

输出包含两个故障的详细信息:

测试失败 - ExampleTest()

消息:预期:2但是:1

测试失败 - ExampleTest()

消息:预期:4但是:3

如何使用NUnit的Fluent Assertions获得类似的结果?

c# nunit assertions fluent-assertions nunit-3.0

5
推荐指数
2
解决办法
2250
查看次数

LINQ查询语法具有多个语句

可以使用LINQ的查询语法重写此方法吗?

public IEnumerable<Item> GetAllItems()
{
    return Tabs.SelectMany(tab =>
        {
            tab.Pick();
            return tab.Items;
        });
}
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚tab.Pick()方法调用的位置.

c# linq linq-query-syntax

2
推荐指数
1
解决办法
686
查看次数

将属性包含在谓词中时出现异常

我正在尝试比较具有多个属性的两个对象,但需要使用谓词来比较特定属性(object1在 处没有这些属性的确切值object2,因此我需要在那里比较部分字符串)。

所以,我正在尝试:

object1.Should().BeEquivalentTo(object2, options => options
    .Including(o => o.Property1.StartsWith("something"))
    .Including(o => o.Property2.StartsWith("something else")
);
Run Code Online (Sandbox Code Playgroud)

我希望所有其他属性都能像往常一样进行比较。

然而,运行上面的代码会抛出异常:

消息:System.ArgumentException:表达式<Convert(o.Property1.StartsWith("something"), Object)>不能用于选择成员。参数名称:表达式

我检查了文档,它的示例与我的示例相同(https://fluidassertions.com/objectgraphs/上的“选择成员”一章)。

为什么会出现此异常以及如何修复它?

.net c# fluent-assertions

1
推荐指数
1
解决办法
1018
查看次数