我在网站上有一个搜索框,根据关键字返回搜索结果(将这些搜索结果存储为c#中的列表)
我需要测试一些过滤器选项,其中一个是产品名称A-Z。
选择此选项后,搜索结果应相应地进行排序。
无论如何断言这是针对N单位的列表进行的吗?
答案 0 :(得分:0)
是的,您可以使用CollectionAsserts
succeed if the two collections contain the same objects, in the same order。当然,这需要您对期望的集合进行排序,例如:
var expected = new[] { "A", "B", "C" };
var actual = ...
CollectionAssert.AreEqual(expected, actual);
使用约束模型和Enumerable.SequenceEqual:
可以实现类似的效果var expected = new[] { "A", "B", "C" };
var actual = ...
Assert.That(expected.SequenceEqual(actual), Is.True);
但是这会有较少的本地化失败消息( true vs false ),而不是指向集合不同的地方(CollectionAssert
就是这种情况)。
答案 1 :(得分:0)
如果您只是需要确保它们已排序,请使用constraint assertion syntax。它很简单:
string[] yourActualSearchResults = new string[] ( "alpha", "beta", "gamma" );
Assert.That(yourActualSearchResults, Is.Ordered);