如何在 <form> 中获取 Id 以使用点击方法进行测试

How to get Id inside <form> for testing using click method

我试图从我的 html 获取 id 以供单元测试 laravel 中的 click 方法使用。

这是我的 html 使用 blade:

<td>
    <form class="form-horizontal" method="post" action="{{ action('AdminWeb\UserController@toggleActivateStatus', $user->id) }}">
        {{ csrf_field() }}
        <button id="user{{$user->id}}" class="btn btn-sm {{ $user->status == 'active' ? 'btn-danger' : 'btn-success' }}" type="submit">{{ $user->status == 'active' ? 'Deactivate' : 'Activate' }}</button>
    </form>
</td>

请注意,我使用 id="user{{$user->id}}"

<button> 中生成了 id 元素

所以我试图在我的测试 class 中获取该 ID,例如 id=user3,如下所示:

public function testActivateUser()
  {
    $this->visit('users')
      ->click('user3')
      ->seePageis('users');
  }

但我无法得到它:

UserControllerTest::testActivateUser
InvalidArgumentException: Could not find a link with a body, name, or ID attribute of [user3].

有什么帮助吗?谢谢。

点击方法不适用于按钮,如异常所述,它仅适用于链接。您可以尝试以下方法:

...
    <form>
        <button name="activate-user-{{ $user->id }}"></button>
    </form>
...

在你的测试中

/**
 * A basic user activation test.
 *
 * @return void
 */
public function testActivateUser()
{
    $this->visit('/users')->press('activate-user-1');
}