Модульное тестирование - Как сравнить две постраничные коллекции, чтобы утверждать, что все элементы разные? - PullRequest
2 голосов
/ 29 сентября 2010

Я быстро просмотрел здесь, не смог найти дубликат (поправьте меня, если я не прав).

У меня есть следующий модульный тест для некоторого пейджинга с LINQ:

    // Arrange.
    const int locationId = 1;
    const LocationType locationType = LocationType.City;
    int pageSize = 10;

    // Act.
    var postsPageOne = PostService.FindAllPostsForLocationPaged<Review>(locationId, locationType, 1, pageSize);
    var postsPageTwo = PostService.FindAllPostsForLocationPaged<Review>(locationId, locationType, 2, pageSize);

    // Assert.
    Assert.IsTrue(postsPageOne.Count > 0);
    Assert.IsTrue(postsPageTwo.Count > 0);
    Assert.AreEqual(postsPageOne.Count, pageSize);
    Assert.AreEqual(postsPageTwo.Count, pageSize);
    CollectionAssert.AllItemsAreNotNull(postsPageOne.ToArray());
    CollectionAssert.AllItemsAreNotNull(postsPageTwo.ToArray());

Я хочу утверждать, что все элементы в коллекции postsPageOne отличаются от всех элементов в коллекции postsPageTwo .(похоже на способ проверить пейджинг)

Есть идеи, как мне это сделать?

Ответы [ 3 ]

3 голосов
/ 29 сентября 2010

Это не похоже на способ проверить мне пейджинг.Я бы проверил подкачку, имея известный набор данных и проверив, что каждая страница содержит данные, которые я ожидал бы получить.В противном случае ваш код мог бы просто составлять случайные данные, и, если бы он был другим, ваш тест проходил бы.маленький.

2 голосов
/ 29 сентября 2010
Assert.IsFalse(postsPageOne.Intersect(postsPageTwo).Any());
0 голосов
/ 29 сентября 2010

Предполагая Id свойство в ваших сообщениях:

!postsPageOne.Select(x => x.Id).Intersect(postsPageTwo.Select(x => x.Id)).Any()

Способ тестирования подкачки в моих интеграционных тестах состоит в том, чтобы запросить большой одностраничный список, а затем разбить его на страницы, запрашивая каждую страницу и отслеживая все идентификаторы в порядке их возврата. Затем я сравниваю идентификаторы, возвращенные в большом списке, с идентификаторами, возвращаемыми вызовами на пейджинговую связь, и проверяю, точно ли они совпадают.

...