Vit*_*lyP 11 phpunit functional-testing symfony
我得到"InvalidArgumentException:当前节点列表为空." 通过PHPUnit运行功能测试.这是我写的测试:
public function testAdd()
{
$client = static::createClientWithAuthentication('main');
$crawler = $client->request('GET', 'en/manage');
$send_button = $crawler->selectButton('submit');
$form = $send_button->form(array(
'PrCompany[email]' => 'test@example.ua',
'PrCompany[first_name]' => 'Anton',
'PrCompany[last_name]' => 'Tverdiuh',
'PrCompany[timezone]' => 'Europe/Amsterdam'
));
$form['PrCompany[companies][1]']->tick();
$client->submit($form);
$this->assertTrue($crawler->filter('html:contains("User is invited")')->count() > 0);
}
Run Code Online (Sandbox Code Playgroud)
gre*_*ire 12
您可以使用调试问题 var_dump($client->getResponse()->getContent());
另外,我认为你应该这样写:
$crawler = $client->submit($form);
Run Code Online (Sandbox Code Playgroud)
否则,您将在表单提交之前测试第一个URL的响应.
我也在努力解决这个问题,似乎该selectButton方法触发了这个错误.
在阅读了DOM Crawler文档之后,我发现该selectButton方法将实际的按钮文本作为字符串参数.因此,如果您的按钮是"请提交我的表格",那将是您的文字.
它确实采用不同的参数,如下所示(取自文档)
A selectButton() method is available on the Crawler which returns another
Crawler that matches a button (input[type=submit], input[type=image],
or a button) with the given text.
Run Code Online (Sandbox Code Playgroud)
编辑
在最终成功完成测试后,我还建议您按照此示例来测试表单:
use Goutte\Client;
$client = new Client();
$crawler = $client->request('GET', 'https://github.com/login');
$form = $crawler->selectButton('Log in')->form();
$form['login'] = 'symfonyfan';
$form['password'] = 'anypass';
$crawler = $client->submit($form);
$this->assertTrue($crawler->filter('html:contains("Welcome Back")')->count() > 0);
Run Code Online (Sandbox Code Playgroud)
主要区别在于,我使用了Goutte捆绑包,我用packagist中的composer安装(在我的情况下,我添加了"fabpot/goutte": "1.0.*@dev")
| 归档时间: |
|
| 查看次数: |
21208 次 |
| 最近记录: |