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

Dal*_*lin 1 php codeception

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

例:

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

), 'submit');
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我遇到文件上传输入的问题.

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

 ), 'submit');
Run Code Online (Sandbox Code Playgroud)

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

ale*_*ard 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.');
Run Code Online (Sandbox Code Playgroud)

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

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