如何在Codeception中使用SubmitForm()附加文件

时间:2015-01-31 15:33:46

标签: php codeception

我正在通过SubmitForm()函数测试表单,因为表单使用javascript循环遍历每个单独的项目。

示例:

$I->submitForm('#form', array(
    'feet' => '1',
    'inches' => '2',

), 'submit');

这样可以正常工作,但我遇到了文件上传输入问题。

$I->submitForm('#form', array(
    'feet' => '1',
    'inches' => '2',
    'file' => ???

 ), 'submit');

我尝试发送一个数组来模仿$_FILES数组,但这显然不是正确的方法。这可能吗?

1 个答案:

答案 0 :(得分:6)

我也遇到过这个问题,我能看到它的唯一方法是手动填写字段并点击提交按钮。

例如

$I->fillField(['name' => 'name'], 'Test');
$I->attachFile('input[name=photo]', 'test.jpg');
$I->click('#formId button[type=submit]');
$I->seeCurrentRouteIs('route.index');
$I->see('Model has been updated.');

您可以将任何测试文件存储在Codeception tests / _data文件夹中。

这确实有效,但遗憾的是在我目前的情况下无法帮助我,因为我有一个动态填充各种选择元素的表单,因此我需要submitForm,因为我无法手动selectOption根据其他表单完成情况填充选项。