如何在 MSTest 中断言返回集合的顺序是正确的?
[TestMethod]
public void when_sorting_movies_it_should_be_able_to_sort_all_movies_by_title_descending()
{
populateTestMovies(movie_collection);
MovieLibrary movieLibrary = new MovieLibrary(movie_collection);
IEnumerable<Movie> results = movieLibrary.sort_all_movies_by_title_descending();
Assert.IsTrue(results.Contains(theres_something_about_mary));
Assert.IsTrue(results.Contains(the_ring));
Assert.IsTrue(results.Contains(shrek));
Assert.IsTrue(results.Contains(pirates_of_the_carribean));
Assert.IsTrue(results.Contains(indiana_jones_and_the_temple_of_doom));
Assert.IsTrue(results.Contains(cars));
Assert.IsTrue(results.Contains(a_bugs_life));
Assert.AreEqual(7, results.Count());
}
最佳答案
创建硬编码 IEnumerable<string>
使用预期顺序的电影标题,从结果集合中提取标题并使用 SequenceEqual
检查它们的顺序是否相同(假设您引用的常量是 Movie
对象,并且 Movie
具有 Title
属性):
IEnumerable<string> expected = new[]
{
theres_something_about_mary.Title,
the_ring.Title,
/* and so on */
};
Assert.IsTrue(results.Select(m => m.Title).SequenceEqual(expected));
关于c# - 断言集合的顺序正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5218505/