使用Codeception功能测试来POST数据

时间:2013-06-27 13:29:25

标签: php laravel functional-testing codeception

我想创建一个测试,它将直接将数据发布到Laravel页面以测试它处理坏数据。

我可以从打开表单的页面开始进行验收测试,调用$I->click('Search');,页面按预期处理数据。

阅读Codeception网站上的功能测试介绍,它说明了

In simple terms we set $_REQUEST, $_GET and $_POST variables, then we execute your script inside a test, we receive output, and then we test it.

这听起来很理想,设置POST数据数组并直接在处理页面触发它。但我找不到任何文件。我玩过sendAjaxPostRequest,但它没有传递给$ _POST。

有没有办法可以像这样单独测试页面?

2 个答案:

答案 0 :(得分:4)

原来解决方案在于Codeception REST module

将其添加到functional.suite.yml文件允许您编写:

$I = new TestGuy($scenario);
$I->wantTo('check a page is resistant to POST injection');
$I->sendPOST(
    'search',
    array(
        'startDate' => '2013-07-03',
        'endDate' => '2013-07-10',
        'exec' => 'some dodgy commands',
    ));
$I->see('Search results');
$I->dontSee('Dodgy command executed');

有点笨重,但它允许测试单个页面。

答案 1 :(得分:-3)

来自手册@ http://codeception.com/docs/04-AcceptanceTests

$I->submitForm('#update_form', array('user' => array(
     'name' => 'Miles',
     'email' => 'Davis',
     'gender' => 'm'
)));