Заголовок «Проверять, возвращает ли List<T>
коллекцию» не имеет смысла, поскольку List<T>
является типом, а не методом, поэтому он не возвращает все, что равно что-то.Прочитайте Как спросить , чтобы узнать, насколько важен заголовок.
Вы говорите, что тестируете менеджера, и в примере показан код, который издевается над менеджером.Но если вы издеваетесь над менеджером, вы не тестируете его, вы должны тестировать то, что использует менеджер.Я собираюсь предположить, что это так.
Учитывая, что вы настраиваете макет для возврата коллекции при вызове менеджера, вы можете использовать Verify, чтобы проверить, что произошло с вашим макетом (синтаксис очень похож на Setup).Но часто вам это не нужно, поскольку возвращаемое значение из тестируемого кода часто определяется значением, возвращаемым зависимостью.
Например, если возвращаемое значение из тестируемого кода должно бытьзначение, которое ему вернул менеджер (который является коллекцией, которую вы возвращаете в программе установки), утверждая, что возвращаемое значение является ссылкой, равнозначно тому, что ваш возвращенный макет является решением.(Нет другого способа, которым assert мог бы пройти, если не был вызван метод, который был настроен.)
Кажется, нет никакой ценности утверждать что-либо о коллекции, которую вы настроили как частьваш тест.
Дополнительный совет: вы не отметили, какую платформу тестирования вы используете, но Assert.IsTrue(myReturnList.Count > 0);
- это плохой способ подтверждения, так как в случае сбоя подтверждения сообщение всегда "ожидается истинным, но ложным"».Принимая во внимание, что Assert.That(myReturnList, Has.Count.GreaterThan(0));
(я предполагаю, что NUnit) даст гораздо лучшую информацию, если он потерпит неудачу.
Еще один совет, мне нужно предостеречь насчет использования It.IsAny
.Взгляните на этот вопрос (что касается Verify, но синтаксис очень похож на Setup, и проблема с It.IsAny такая же).Прочитайте непринятый ответ и все комментарии, затем принятый ответ.