我有下一个div - >
<div id="grid">
<div id="grid-item" onClick="sendServer(1)">Data 1 </div>
<div id="grid-item" onClick="sendServer(2)">Data 2 </div>
<div id="grid-item" onClick="sendServer(3)">Data 3 </div>
</div>
sendServer()是一个ajax,用于验证数据并将数据发送到服务器并转到路由&#39; /irCurso{id}
&#39;。
我想在点击这些div时测试结果,我知道我不能使用->click()
方法因为它只适用于<a>
标记。这是我的代码:
$this->visit('/cursos')
->click('id=grid-item')
->seePage('irCurso/1');
谢谢:)
答案 0 :(得分:0)
正如Artenes Nogueira所说,Laravel 5.3及更早版本没有浏览器测试支持。
为了解决这个问题,您需要使用composer
安装PHPUnit_selenium包 composer require --dev phpunit/phpunit-selenium
在tests
文件夹
<?php
class SeleniumTestCase extends PHPUnit_Extensions_Selenium2TestCase
{
/**
* The base URL to use while testing the application.
*
* @var string
*/
protected function setUp()
{
$this->setBrowser('firefox');
$this->setBrowserUrl('http://localhost:8000/');
}
protected function visit($path)
{
$this->url($path);
return $this;
}
protected function see($text, $tag = 'body')
{
print_r(request()->session()->all());
//method call by tag name;
$this->assertContains($text,$this->byTag($tag)->text());
return $this;
}
protected function pressByName($text){
$this->byName($text)->click();
return $this;
}
protected function pressByTag(){
$this->byTag('button')->click();
return $this;
}
protected function type($value, $name)
{
$this->byName($name)->value($value);
return $this;
}
protected function hold($seconds){
sleep($seconds);
return $this;
}
}
并为访问主页网址创建新的测试用例
<?php
class ExampleTest extends SeleniumTestCase
{
/**
* A basic functional test example.
*
* @return void
*/
public function testTitle()
{
$this->visit('/')
->see('Site title','title');
}
}
并且在开始任何测试之前,您需要启动selenium服务器
java -jar /usr/local/bin/selenium-server-standalone-2.35.0.jar
最后,从终端
运行命令PHPUnit test快乐测试!
参考文献:
答案 1 :(得分:-1)
如果使用5.3或更低版本,则无法测试Laravel测试API单击的div的结果。
当您单击div时,您希望运行JS函数。不幸的是,Laravel测试API不会与你的js交互,所以它不会被执行。由于未执行,因此无法评估结果。
但是使用Dusk(在laravel 5.4中),您可以通过Laravel测试API测试javascript。查看文档以获取有关Dusk的更多信息:https://laravel.com/docs/master/dusk