Laravel Dusk Test утверждает, что элемент селектора не существует - PullRequest
0 голосов
/ 07 ноября 2018

Я занимаюсь разработкой веб-приложения с использованием фреймворка Laravel. Я запускаю тестирование модуля Dus / Browser в своем приложении. Но теперь у меня проблема с утверждением, существует ли выбранный элемент.

У меня есть файл с этим фрагментом кода.

@if(auth()->user()->role == 1)
      <a dusk="button-create" href="/create">
          Create
      </a>
@endif

Я проверяю, существует ли эта кнопка или нет в модульном тесте Dusk, как это.

  $this->browse(function (Browser $browser) use ($admin) {
        $browser->loginAs($admin)->visit(url);
        $textContent = $browser->text("@button-create");
        $this->assertNotEmpty($textContent);
    });

Тестирование, если кнопка существует с использованием вышеуказанного кода, в порядке. Но когда я проверяю, если кнопка не существует, как это.

 $this->browse(function (Browser $browser) use ($student) {
            $browser->loginAs($student)->visit(url);
            $textContent = $browser->text("@button-create");
            $this->assertEmpty($textContent);
        });

Я получаю эту ошибку.

no such element: Unable to locate element: {"method":"css selector","selector":"body [dusk="button-create"]"}

Решение, которое я могу придумать, - обернуть элемент html другим элементом и установить для него селектор. Как то так.

<span dusk="button-create">
@if(auth()->user()->role == 1)
          <a href="/create">
              Create
          </a>
    @endif
</span>

Но я не хочу оборачивать его другим html-тегом. Возможно ли это без упаковки другого тега? Как?

1 Ответ

0 голосов
/ 07 ноября 2018

Используйте assertVisible() / assertPresent() и assertMissing():

$browser->assertVisible("@button-create");
$browser->assertMissing("@button-create");
...