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

Метод assertSeeText

Метод assertSeeText применяется к объекту тестового ответа и проверяет, что указанная строка присутствует в теле ответа. При этом все HTML-теги удаляются, а множественные пробелы схлопываются в один. Это позволяет проверять наличие текста независимо от его форматирования. Первым параметром передаётся искомая строка.

Синтаксис

<?php $response->assertSeeText($text); ?>

Пример

Давайте проверим, что страница содержит текст 'Welcome to our website', который может быть обёрнут в разные HTML-теги:

<?php namespace Tests\Feature; use Tests\TestCase; class WelcomePageTest extends TestCase { public function test_welcome_text_is_present() { $res = $this->get('/'); $res->assertSeeText('Welcome to our website'); } } ?>

Если на странице есть код <h1>Welcome to our website</h1>, то проверка пройдёт успешно.

Пример

Метод игнорирует множественные пробелы и переносы строк. Проверим наличие текста с лишними пробелами:

<?php namespace Tests\Feature; use Tests\TestCase; class ArticlePageTest extends TestCase { public function test_article_content_is_present() { $res = $this->get('/article/1'); $res->assertSeeText('Laravel is a great framework'); } } ?>

Если страница содержит HTML <p>Laravel is a great framework</p>, то проверка также будет успешной.

Пример

Метод можно использовать для проверки содержимого динамических страниц, например, приветствия пользователя:

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\User; class UserDashboardTest extends TestCase { public function test_dashboard_shows_username() { $user = User::factory()->create([ 'name' => 'John Doe' ]); $res = $this->actingAs($user)->get('/dashboard'); $res->assertSeeText('John Doe'); } } ?>

В данном примере мы проверяем, что после авторизации на странице отображается имя пользователя.

Пример

Метод чувствителен к регистру. Для проверки без учёта регистра нужно преобразовать строки:

<?php namespace Tests\Feature; use Tests\TestCase; class ProductPageTest extends TestCase { public function test_product_name_case_insensitive() { $res = $this->get('/product/1'); $text = 'PRODUCT NAME'; $res->assertSeeText($text, false); // Или через преобразование $pageText = strip_tags($res->getContent()); $this->assertStringContainsString( strtolower('Product Name'), strtolower($pageText) ); } } ?>

Вторым параметром можно передать false для отключения чувствительности к регистру.

Пример

Проверим отсутствие текста на странице с помощью метода assertDontSeeText:

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\User; class AdminPanelTest extends TestCase { public function test_admin_text_is_hidden_for_guests() { $res = $this->get('/admin'); $res->assertDontSeeText('Admin Panel'); } public function test_admin_text_is_visible_for_admins() { $user = User::factory()->create([ 'is_admin' => true ]); $res = $this->actingAs($user)->get('/admin'); $res->assertSeeText('Admin Panel'); } } ?>

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

"OK (2 tests)"

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

  • метод assertSee,
    который проверяет наличие HTML-кода без очистки тегов
  • метод assertDontSee,
    который проверяет отсутствие HTML-кода без очистки тегов
  • метод assertStatus,
    который проверяет код HTTP-ответа
  • метод assertViewIs,
    который проверяет используемый шаблон
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить