NUnit: Что состоит в том, чтобы утверждать самый краткий путь, содержит ли IEnumerable объект определенного типа?

У меня есть метод под названием RenderContent, который возвращается object[]
В моем модульном тесте я должен утверждать, что этот массив не содержит объектов типа VerifyRequest

В данный момент я использую следующее Assert оператор. Действительно ли там что-нибудь более кратко?

Assert.That(
    domain.RenderContent().OfType<VerifyRequest>().Count(),
    Is.EqualTo(0)
);

Я предпочитаю использовать быстрый синтаксис. Отметьте также тот RenderContent возвраты object[], нет IQueryable<object>.

8
задан goofballLogic 1 March 2010 в 15:07
поделиться

5 ответов

Если вы используете NUnit 2.5, вы можете использовать что-то вроде:

Assert.That(domain.RenderContent(), Has.None.InstanceOf<VerifyRequest>());

Но я не уверен, поддерживают ли другие среды модульного тестирования этот стиль утверждения.

14
ответ дан 5 December 2019 в 05:34
поделиться

Метод расширения Any, которому можно задать лямбда-выражение:

Assert.IsFalse(domain.RenderContent().Any(i => i is VerifyRequest));
2
ответ дан 5 December 2019 в 05:34
поделиться

Вы можете немного сократить его, используя вместо этого метод Assert.AreEqual:

Assert.AreEqual(domain.RenderContent().OfType<VerifyRequest>().Count(), 0);
1
ответ дан 5 December 2019 в 05:34
поделиться

Я предпочитаю подход Assert.AreEqual; NUNit использует Assert.That для внутренних объектов Assert, STringAssert и т. Д. Мне нравится просто выполнять Assert.AreEqual (0, domain.RenderContent (). OfType (). Count ()); чтобы проверить подсчеты.

Таким образом, он напрямую проверяет, что ни один объект типа не имеет какого-либо количества записей, но до некоторой степени варианты, которые вы видите, являются предпочтительными, и все они одинаково допустимы. Вы должны выбрать то, что вам нравится в вашем стиле разработки.

1
ответ дан 5 December 2019 в 05:34
поделиться

Хотя я не знаю точного синтаксиса NUnit для утверждения IsFalse, лучше всего для такого типа теста подходит метод расширения Any:

Assert.IsFalse(domain.RenderContent().OfType<VerifyRequest>().Any());  

Может возникнуть соблазн использовать метод Count, но Any более эффективен, так как он прервется при первом появлении.

12
ответ дан 5 December 2019 в 05:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: