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

How to attach a file using SubmitForm() in Codeception

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

示例:

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

), 'submit');

这工作正常,但我在文件上传输入方面遇到了问题。

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

 ), 'submit');

我尝试发送一个数组来模拟 $_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.');

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

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

我意识到这是旧的并且已经被标记为答案,但它没有回答具体问题,这对于发布已接受答案的@alexleonard 来说仍然是个问题。

您可以将 attachFilesubmitForm 结合使用。你只需要先打电话。例如:

$I->attachFile('#form input[type=file]', <pathtofile> );
$I->submitForm('#form', array(
    'feet' => '1',
    'inches' => '2',
), 'submit');