断言字符串数组成员内容

dus*_*ntp 2 c# nunit unit-testing

在此测试中,所需的断言是获取的字符串数组的成员是否具有与某物类似的值。

例如:假设获取到的字符串数组为

string[] obtainedArr = new string("c:\programfiles", "d:\morefiles", "e:\some");
Run Code Online (Sandbox Code Playgroud)

我们有这样的东西吗:

Assert.That(obtainedArr, Has.Member.Which.Is.String.Containing("d:"), "D: location not obtained");
Run Code Online (Sandbox Code Playgroud)

或者我们有更好的方法来实现这一目标吗?

Ser*_*kiy 5

Assert.True(obtainedArr.Any(s => s.Contains("d:")), "D: location not obtained");
Run Code Online (Sandbox Code Playgroud)

注意:默认情况下,字符串比较区分大小写,因此搜索D:示例输入将失败。另外,如果您正在寻找子路径,那么也许StartsWith是更合适的检查,而不是Contains

Assert.That(obtainedArr.Any(s => 
   s.StartsWith("d:", StringComparison.InvariantCultureIgnoreCase));
Run Code Online (Sandbox Code Playgroud)

当然,这段代码的可读性不是很好,所以我会创建(扩展)方法来检查给定路径是否是其他路径的子路径。