Laravel Dusk - 调用数组的成员函数 click()

Laravel Dusk - Call to a member function click() on array

我有问题。当我尝试 运行 我的 dusk 测试时它输出这个错误:

1) Tests\Browser\NewPostTest::test_new_post
Error: Call to a member function click() on array

D:\xampp\htdocs\laravel_blog\tests\Browser\NewPostTest.php:32
D:\xampp\htdocs\laravel_blog\vendor\laravel\dusk\src\Concerns\ProvidesBrowser.php:67
D:\xampp\htdocs\laravel_blog\tests\Browser\NewPostTest.php:34

我的测试方法是这样的:

public function test_new_post()
    {
        $this->browse(function (Browser $browser) {
          $faker = Faker::create();
          $title = $faker->sentence();
          $slug = str_replace(' ', '-', $title);
          $browser->loginAs(User::find(2))
                  ->visit('/posts/create')
                  ->assertSee('Create New Post')
                  ->type('title', $title)
                  ->type('slug', $slug)
                  ->type('body', $faker->paragraphs(5, true))
                  ->select('category_id')
                  ->script('jQuery(".select2").val(["1","2"]).trigger("change");')
                  ->click('input[type=submit]#submit')
                  ->assertPathIs('/posts');
        });
    }

如您所见,我正在为我的标签使用 select2。谁能告诉我我做错了什么?

您不能在 script() 之后使用链接,因为它 returns 是一个数组而不是 $this:

$browser->[...]
    ->script('jQuery(".select2").val(["1","2"]).trigger("change");')
$browser->click('input[type=submit]#submit')
    ->assertPathIs('/posts');

select2选择我有另一种方案。

->press('.select2-container')
->waitFor('.select2-container--open', 1)
->click('ul.select2-results__options li:nth-child(2)')
->pause(1000)