РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1120 of 1361 menu

Метод assertSelectorTextNotContains

Метод assertSelectorTextNotContains относится к классу WebTestCase и используется в функциональных тестах Symfony. Он проверяет, что текст внутри HTML-элемента, найденного по CSS-селектору, не содержит заданную подстроку. Первым параметром передаётся CSS-селектор, вторым - искомая подстрока, которая не должна встречаться в тексте элемента. Если подстрока найдена - тест завершается ошибкой.

Метод удобен, когда нужно убедиться, что на странице отсутствует какой-либо текст: сообщение об ошибке, скрытые данные, нежелательные метки и так далее.

Синтаксис

assertSelectorTextNotContains(string $selector, string $text, string $message = '')

Пример

Давайте создадим контроллер, который выводит страницу с заголовком 'hello':

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(): Response { return new Response('<h1>hello</h1>'); } } ?>

Теперь напишем тест, который проверяет, что в заголовке h1 нет подстроки 'error':

<?php namespace AppTestsController; use SymfonyBundleFrameworkBundleTestWebTestCase; class ArticleControllerTest extends WebTestCase { public function testIndex(): void { $client = static::createClient(); $client->request('GET', '/article'); $this->assertSelectorTextNotContains('h1', 'error'); } } ?>

Тест пройдёт успешно, так как текст 'hello' не содержит подстроку 'error'.

Пример

Давайте рассмотрим случай, когда тест должен упасть. Изменим контроллер так, чтобы он выводил сообщение об ошибке:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(): Response { return new Response('<h1>error page</h1>'); } } ?>

Теперь выполним тот же тест:

<?php namespace AppTestsController; use SymfonyBundleFrameworkBundleTestWebTestCase; class ArticleControllerTest extends WebTestCase { public function testIndex(): void { $client = static::createClient(); $client->request('GET', '/article'); $this->assertSelectorTextNotContains('h1', 'error'); } } ?>

Результат выполнения теста:

Failed asserting that the text of the selector "h1" does not contain "error".

Пример

Давайте проверим отсутствие текста сразу в нескольких элементах страницы. Создадим контроллер с несколькими абзацами:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(): Response { $html = '<div class="content">'; $html .= '<p>hello</p>'; $html .= '<p>article</p>'; $html .= '<p>user</p>'; $html .= '</div>'; return new Response($html); } } ?>

Напишем тест, который проверяет, что в блоке .content нет подстроки 'error':

<?php namespace AppTestsController; use SymfonyBundleFrameworkBundleTestWebTestCase; class ArticleControllerTest extends WebTestCase { public function testContent(): void { $client = static::createClient(); $client->request('GET', '/article'); $this->assertSelectorTextNotContains('.content', 'error'); } } ?>

Тест пройдёт успешно, так как ни один из абзацев не содержит подстроку 'error'.

Смотрите также

  • метод assertSelectorTextContains,
    который проверяет наличие подстроки в тексте элемента
  • метод assertSelectorTextSame,
    который проверяет точное совпадение текста элемента
  • метод assertSelectorExists,
    который проверяет наличие элемента на странице
  • метод assertSelectorNotExists,
    который проверяет отсутствие элемента на странице
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить