【问题标题】:How to get the form object in PHPUnit如何在 PHPUnit 中获取表单对象
【发布时间】:2017-08-13 06:43:32
【问题描述】:

我正在使用 PHPUnit 进行测试。

但它显示错误。

whitebear$ phpunit -c app src/Acme/MemberBundle/Tests/Controller/DefaultControllerTest.php 
PHPUnit 4.8.35 by Sebastian Bergmann and contributors.

E

Time: 1.18 seconds, Memory: 90.25MB

There was 1 error:

1) Acme\MemberBundle\Tests\Controller\DefaultControllerTest::testIndex
InvalidArgumentException: The current node list is empty.

我猜 'selectButton' 有问题。

$crawlerLogin = $client->request('GET', '/login');
$form = $crawlerLogin->selectButton('submit')->form();
$form['_username'] = 'myuser';
$form['_password'] = 'mypass'; 
$crawler = $client->submit($form);

这些是php生成的用于测试的html。

<form action="/wisdom/web/app_dev.php/login_check" method="post">
            <input type="hidden" name="_csrf_token" value="fEIiYQbeYn-qt-siza3GKybh3RFSp5eOh-Nas5hyyh4" />

    <label for="username">Username</label>
    <input type="text" id="username" name="_username" value="" required="required" />

    <label for="password">Password</label>
    <input type="password" id="password" name="_password" required="required" />

    <input type="checkbox" id="remember_me" name="_remember_me" value="on" />
    <label for="remember_me">Remember me</label>

    <input type="submit" id="_submit" name="_submit" value="Log in" />
</form>

【问题讨论】:

  • 您并没有说您使用的是哪个框架。另外:您使用的 PHPUnit 版本不再受支持。
  • 我用的是symfony2框架,啊这个phpUnit是老版本了。我会更新的。

标签: php symfony phpunit symfony-forms domcrawler


【解决方案1】:

From the doc:

selectButton() 方法在 Crawler 上可用,它返回 另一个匹配按钮的爬虫 (input[type=submit], input[type=image],或一个按钮)与给定的文本。

你应该传递按钮的文本,所以试试:

$form = $crawlerLogin->selectButton('Log in')->form();

希望有帮助

【讨论】:

  • 谢谢,我遇到了另一个问题,所以还不能测试,但你的答案看起来是正确的。测试后我会检查这个答案。
猜你喜欢
  • 1970-01-01
  • 2017-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-13
  • 2012-11-08
  • 1970-01-01
相关资源
最近更新 更多