YMM*_*YMM 9 c# assertion fluent-assertions
我有一堂课:
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 = 38,
CurrentStudentCount = 2,
MaxStudentCount = 2
}
};
Run Code Online (Sandbox Code Playgroud)
我想断言每个对象都CampusId
等于 38:
collection.Should().Satisfy(i => i.CampusId == 38);
Run Code Online (Sandbox Code Playgroud)
但断言失败并显示以下消息:
预期集合满足所有谓词,但以下元素与任何谓词不匹配:
Index: 1, Element: TestClass
{
CampusId = 38,
CurrentStudentCount = 2,
Id = 127,
MaxStudentCount = 2
}
Index: 2, Element: TestClass
{
CampusId = 38,
CurrentStudentCount = 2,
Id = 126,
MaxStudentCount = 2
}
Run Code Online (Sandbox Code Playgroud)
Satisfy
(和SatisfyRespectively
) 需要集合中的每个元素都有一个 lambda。在你的情况下,这将是:
collection.Should().Satisfy(
i => i.CampusId == 38,
i => i.CampusId == 38,
i => i.CampusId == 38
);
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用OnlyContain
:
collection.Should().OnlyContain(i => i.CampusId == 38);
Run Code Online (Sandbox Code Playgroud)
更新
对于版本6.5.0
,还可以使用AllSatisfy
:
collection.Should().AllSatisfy(i => i.CampusId.Should().Be(38))
Run Code Online (Sandbox Code Playgroud)
使用,根据https://fluidassertions.com/collections/AllSatisfy()
在 v. 6.5.0 中添加。
在你的情况下,它将是:
collection.Should().AllSatisfy(
i => i.CampusId.Should().Be(38)
);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6457 次 |
最近记录: |