如何在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());
}
Run Code Online (Sandbox Code Playgroud)
Fre*_*örk 10
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));
Run Code Online (Sandbox Code Playgroud)