如何在 <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');
}
我试图从我的 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');
}