Laravel功能测试ajax控件

时间:2017-04-14 06:27:32

标签: php laravel laravel-5.3

在laravel 5.4中,我可以看到有以下方法:

$browser->pause(1000);
$browser->waitFor('.selector');
$browser->waitForLink('Create');

但我在Laravel 5.3中没有看到这些。

我们有两个链式选择框,其中第二个选择框值是根据第一个选择框中的选择通过ajax加载的。问题是当我们运行测试时,laravel不会等待加载第二个selectbox / ajax,这会导致测试失败,因为它无法从第二个选择框中选择任何值。

$this->visit('/department');
$this->select('1', 'country_id');
$this->select('1', 'region_id'); // problem here
// rest of code

我也尝试使用sleep(),但它没有用。

请问如何在5.3中对这种情况进行功能测试?感谢

2 个答案:

答案 0 :(得分:8)

默认情况下,laravel 5.3不支持此功能。因为他们使用Dusk在laravel 5.4中引入了Ajax测试。

查看此帖子:https://laravel-news.com/laravel-dusk-is-coming

但是,我们很幸运。

看着黄昏的composer.json。你可以在laravel 5.3中使用它,因为它的依赖性是"illuminate/support" : "~5.3",Laravel 5.3就满足了它。

您需要做的只是:composer require laravel/dusk

点击composer.json此处:https://github.com/laravel/dusk/blob/master/composer.json

修改

依赖项存在问题。我创建了一个解决依赖问题的新包。我已经运行了所有测试用例。它没有给我任何错误。

您可以使用以下命令来使用此程序包:composer require pankitgami/dusk

点击此处:https://packagist.org/packages/pankitgami/dusk

答案 1 :(得分:0)

用于验证精确JSON匹配的

seeJsonEquals

    $this->post('/user', ['name' => 'Sally'])
         ->seeJsonEquals([
             'created' => true,
         ]);