Ed.*_*ard 11 c# nunit unit-testing constraints
如何断言该集合只包含一个具有给定属性值的元素?
例如:
class Node
{
private readonly string myName;
public Node(string name)
{
myName = name;
}
public string Name { get; set; }
}
[Test]
public void Test()
{
var array = new[]{ new Node("1"), new Node("2"), new Node("1")};
Assert.That(array, Has.Some.Property("Name").EqualTo("1"));
Assert.That(array, Has.None.Property("Name").EqualTo("1"));
// and how to assert that node with Name="1" is single?
Assert.That(array, Has.???Single???.Property("Name").EqualTo("1"));
}
Run Code Online (Sandbox Code Playgroud)
Dar*_*iak 18
1:您可以使用Has.Exactly()
约束:
Assert.That(array, Has.Exactly(1).Property("Name").EqualTo("1"));
Run Code Online (Sandbox Code Playgroud)
但请注意,由于Property是通过反射获得的,因此在属性"Name"不存在的情况下会出现运行时错误.
2 :( 推荐)但是,最好通过谓词而不是字符串来获取属性.如果属性名称不存在,您将收到编译错误:
Assert.That(array, Has.Exactly(1).Matches<Node>(x => x.Name == "1"));
Run Code Online (Sandbox Code Playgroud)
3:或者,你可以依靠Count
方法:
Assert.That(array.Count(x => x.Name == "1"), Is.EqualTo(1));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10153 次 |
最近记录: |