php - symfony 单元测试 : add/modify form action

标签 php unit-testing symfony phpunit symfony-forms

我有一个没有操作的表单(使用 javascript 提交),我正在尝试为其编写单元测试,但由于缺少“操作”属性而失败:

InvalidArgumentException : Current URI must be an absolute URL ("").

有没有办法在单元测试中添加它或者使用爬虫修改html内容?

<form id="form_search_page">
    <input type="text" name="keyword" value="" />
    <button type="submit" name="searchBtn" id="searchBtn">Search</button>
</form>


$client = $this->makeClient(true);
$url = $this->createRoute("page_index"));
$crawler = $client->request('GET', $url);
$response = $client->getResponse();

$form = $crawler->filter('#form_search_page')->form();
$params = array(
    "form[text]" => "dummy title"
);
$form->setValues($params);
$crawler = $client->submit($form);
$response = $client->getResponse();
$this->assertGreaterThan(0, $crawler->filter('.pages li')->count());

最佳答案

我找到了解决方案:

$crawler
    ->filter('form#form_search_page')
    ->reduce(function (Crawler $form) use ($router) {
        $url = $router->generate('search_page', array(), true);

        $node = $form->getNode(0);
        if (!$node->hasAttribute('action')){
            $node->setAttribute('action', $url);
            $node->setAttribute('method', 'POST');
            return true;
        }
        return false;
    })
    ->first();

关于php - symfony 单元测试 : add/modify form action,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28027417/

相关文章:

php - 在选择查询中组合 2 个 sql 字段

javascript - 使用ajax将php数组传递给javascript

c# - 如何对包含数据库事务的代码进行单元测试

javascript - 如何使用 Symfony Webpack Encore 编译多个 javascript 文件?

Symfony2 : multiples apps, 一个共享翻译文件夹

php - 如何在另一个页面恢复Socket连接?

php - 如何检查 Couchbase 中是否存在 key ?

symfony - 在 Dev Env 上禁用结果缓存 (Redis) - Symfony2

php - CakePHP 单元测试只工作一次,然后我必须重置数据库

android - 使用 Robolectric 和 Mockito 模拟 PackageManager