3

我想创建一个测试,它将直接将数据发布到 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 传递任何东西。

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

4

2 回答 2

4

原来解决方案在于Codeception REST 模块

将此添加到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');

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

于 2013-07-03T08:36:07.117 回答
-3

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

$I->submitForm('#update_form', array('user' => array(
     '姓名' => '里程',
     '电子邮件' => '戴维斯',
     '性别' => 'm'
)));
于 2013-06-27T15:05:32.843 回答