【问题标题】:Could not send form data in PHPUnit?无法在 PHPUnit 中发送表单数据?
【发布时间】:2015-11-20 02:50:15
【问题描述】:

我是 Symfony 2 的 PHPUnit 新手。 我在向客户端发送表单数据时遇到问题。我有登录页面所需的登录详细信息。所以我将它作为数组发送。每次我运行测试时,我都会收到错误消息:

有 1 个错误:

1) MySite\UserBundle\Tests\Controller\LoginControllerTest::testUser InvalidArgumentException:当前节点列表为空。

我的测试代码是:

public function testUser()
 {
    $client = static::createClient(array(), array());
    $crawler = $client->request('POST', '/login');
    //submit login data
    $form = $crawler->selectButton('submit')->form();
    $data = array(
    '_username' => 'abc@testSite.com',
    '_password' => '123',
    );
    $client->submit($form,$data);
    $client->followRedirect();
    $this->assertTrue($client->getReponse()->isSuccessful());

    //$this->assertTrue($crawler->filter('html:contains("login")'));
    $this->assertTrue($crawler->filter('html:contains("Dashboard")')
      ->count() > 0);
}   

我不知道错误是从哪里来的。 我只是想用用户名和密码验证用户。并检查他们是否已成功访问 Dashboard。 该用户是有效用户,可以从浏览器登录。 任何帮助将不胜感激!

提前谢谢你。

【问题讨论】:

  • 测试用例的哪一行出错了?
  • $form = $crawler->selectButton('submit')->form();错误是:InvalidArgumentException:当前节点列表为空。

标签: symfony functional-testing phpunit


【解决方案1】:

试试这个代码:

        $client = static::createClient(array(), array());
        $crawler = $client->request('GET', '/login');
        $this->assertTrue($crawler->filter("form")->count() > 0, "Login form exist");
        $form = $crawler->filter("form")->form();
        $client->submit($form, array(
            '_username' => $username,
            '_password' => $password,
        ));
        if ($client->getResponse()->isRedirect()) {
            $crawler = $client->followRedirect();
        }
//        die(var_dump($this->client->getResponse()->getContent()));

       $this->assertTrue($crawler->filter('html:contains("Dashboard")')->count() > 0);

希望有帮助

【讨论】:

  • 嗨,我试过你给定的代码,错误在同一行 $form = $crawler->filter("form")->form();说 InvalidArgumentException:当前节点列表为空。
  • 而之前的断言(“登录表单存在”)不会失败?如果是,请检查响应检查 $client->getResponse()->getContent() 的值
【解决方案2】:

正常的写法是:

$form['_username'] = $username;
$form['_password'] = $password;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-11
    • 2019-08-02
    • 1970-01-01
    • 2013-05-15
    • 2011-04-16
    • 2015-04-16
    • 2021-08-15
    • 1970-01-01
    相关资源
    最近更新 更多