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

时间:2016-09-07 03:31:35

标签: php laravel unit-testing phpunit laravel-5.2

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

这是我使用刀片的html:

<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>

请注意,我使用<button>

id="user{{$user->id}}"中生成了id元素

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

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].

任何帮助?感谢。

1 个答案:

答案 0 :(得分:2)

Click方法不适用于按钮,例外情况说,它只适用于链接。您可以尝试以下方法:

...
    <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');
}