Я тестирую функциональность загрузки фото с аватара в приложении Symfony 3.4.Документация Symfony предполагает, что это будет через форму.Однако на рассматриваемой странице не используется ввод формы, поэтому мне сложно разобраться, как написать тест.
Вот HTML:
<div class="col-md-4 docs-buttons">
<label class="btn btn-info btn-block btn-upload" for="inputImage" title="Upload image file" style="margin-bottom:15px;">
<input class="sr-only" id="inputImage" name="file" type="file" accept="image/*">
<span class="docs-tooltip" data-toggle="tooltip" title="Import image with Blob URLs">
<span class="fa fa-plus"></span> Upload New Photo
</span>
</label>
<div class="btn-group" style="margin-right:10px;">
<button class="btn btn-info" data-method="zoom" data-option="-0.1" type="button" title="Zoom Out">
<span class="docs-tooltip" data-toggle="tooltip" title="$().cropper("zoom", -0.1)">
<span class="fa fa-search-minus"></span>
</span>
</button>
<button class="btn btn-info" data-method="zoom" data-option="0.1" type="button" title="Zoom In">
<span class="docs-tooltip" data-toggle="tooltip" title="$().cropper("zoom", 0.1)">
<span class="fa fa-search-plus"></span>
</span>
</button>
</div>
<div class="btn-group">
<button class="btn btn-info" data-method="rotate" data-option="-22.5" type="button" title="Rotate Left">
<span class="docs-tooltip" data-toggle="tooltip" title="$().cropper("rotate", -22.5)">
<span class="fa fa-rotate-left"></span>
</span>
</button>
<button class="btn btn-info" data-method="rotate" data-option="22.5" type="button" title="Rotate Right">
<span class="docs-tooltip" data-toggle="tooltip" title="$().cropper("rotate", 22.5)">
<span class="fa fa-rotate-right"></span>
</span>
</button>
</div>
</div>
<input type="hidden" id="userId" value="6001777">
</div>
<div class="modal-footer">
<div class="row">
<div class="col-xs-6 text-left">
<a class="btn btn-default" data-dismiss="modal">Cancel</a>
</div>
<div class="col-xs-6">
<button id="save" class="btn btn-info">Save</button>
</div>
</div>
Это тест phpunit, написанный для аналогичного случая, но в котором вводом является форма.Есть ли способ изменить это, чтобы проверить страницу выше?
public function testUpload()
{
# Open the page
...
# Select the file from the filesystem
$image = new UploadedFile(
# Path to the file to send
dirname(__FILE__).'/../uploads/photo.jpg',
# Name of the sent file
'photo.jpg',
# MIME type
'image/jpeg',
# Size of the file
11832
);
# Select the form (adapt it for your needs)
$form = $crawler->filter('input[type=submit]...')->form();
# Put the file in the upload field
$form['... name of your field ....']->upload($image);
# 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("filename.jpg")')->count()
);
}