Тестирование загрузки файла без формы в phpunit / Symfony 3.4 - PullRequest
0 голосов
/ 04 июня 2018

Я тестирую функциональность загрузки фото с аватара в приложении 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(&quot;zoom&quot;, -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(&quot;zoom&quot;, 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(&quot;rotate&quot;, -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(&quot;rotate&quot;, 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()
 );
}
...