Функциональные тесты и загрузка файлов?

У меня есть сущность Symfony2 под названием MyUploadedFiles и тип формы MyUploadedFilesType с именем myuploadedfiles, Этот тип формы создает форму с одним полем file, Это поле не должно быть пустым, а остальные данные в сущности генерируются, как только пользователь загружает файл. Теперь я хочу запустить функциональный тест для моего контроллера, который обрабатывает загрузку. Но я всегда получаю ошибку file should not be blank,

Это код в моем myUploadTest метод:

   $filepath = __DIR__.'/test_file.xml';
$xmlfile = new UploadedFile(
$filepath,
'foo.xml',
'text/xml',
\filesize($filepath)
);
$client->request(
'POST',
'/path/to/xml_upload',
array(),
array('myuploadedfiles[file]' => $xmlfile)
);

$response = $client->getResponse();

$this->assertEquals(Codes::HTTP_CREATED, $response->getStatusCode());

Контроллер выглядит так:

   $form->bind($request);
if ($form->isValid()) { ... }

Если я отрисовываю форму с шаблоном ветки и пытаюсь загрузить что-то, все работает нормально. Так что, вероятно, ошибка где-то в тестовом коде.

Спасибо за помощь!

0

Решение

Я использую этот код:

# Select the file from the filesystem
# Path of the file to send
$filepath = __DIR__.'/test_file.xml';
$xmlfile = new UploadedFile(
$filepath,
'foo.xml',
'text/xml',
\filesize($filepath)
);

# Select the form (adapt it for your needs)
$form = $crawler->filter('input[type=submit]...')->form();

# Put the file in the upload field
$form['myuploadedfiles[file]']->upload($xmlfile);

# Send it
$crawler = $this->client->submit($form);

# Check that the file has been successfully sent
#  (in my case the filename is displayed in a <a> link so I check
#  that it appears on the page)
$this->assertEquals(
1,
$crawler->filter('a:contains("foo.xml")')->count()
);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]