首页 > 解决方案 > 如何断言 IEnumerable

问题描述

我想知道这种方法是否是断言 IEnumerable 字符串值的最佳方法,你能指导我如何断言它以取回整个字符串中的一些内容吗?谢谢。

[CodeStep("Assert message")]
public void Test()
{
   var client = new HttpClient();
   client.BaseAddress = new Uri("URLHere");
   var response = string.Empty;
   Task.Run(async () =>
   {
       response = await client.GetStringAsync("message/All");
   }).Wait();

   var messages = JsonConvert.DeserializeObject<IEnumerable<string>>(response);
   Assert.IsTrue(messages.ToString().Contains("TextHere"));
}

标签: c#stringienumerableassert

解决方案


不,这不是检查其中一条消息是否包含单词的最佳方法TextHere。底层序列不需要将其内容呈现为 的一部分ToString,实际上实现就像List<>don't 一样。

尝试改用 LinqContains扩展方法:

Assert.IsTrue(messages.Contains("TextHere"));

如果要检查是否有任何字符串包含子字符串,请TextHere使用Any

Assert.IsTrue(messages.Any(t => t.Contains("TextHere")));


推荐阅读