我正在通过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数组,但显然这不是正确的方法.这可能吗?
我也遇到过这个问题,我可以看到它的唯一方法是手动填充字段并单击提交按钮.
例如
$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因为根据其他表单完成填充选项.