我想创建一个测试,它将直接将数据发布到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。
有没有办法可以像这样单独测试页面?
答案 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' )));