Je dois tester la fonction où il appelle wp_get_attachment_image_src
. Comment puis-je ajouter une image à tester, car pour le moment, si j'appelle cette méthode, elle retourne false.
Je voudrais regarder comment WordPress a construit leurs tests de pièces jointes. Vous constaterez que tests/phpunit/tests/post/attachments.php
ils utilisent cette méthode :
function _make_attachment( $upload, $parent_post_id = 0 ) {
$type = '';
if ( !empty($upload['type']) ) {
$type = $upload['type'];
} else {
$mime = wp_check_filetype( $upload['file'] );
if ($mime)
$type = $mime['type'];
}
$attachment = array(
'post_title' => basename( $upload['file'] ),
'post_content' => '',
'post_type' => 'attachment',
'post_parent' => $parent_post_id,
'post_mime_type' => $type,
'guid' => $upload[ 'url' ],
);
// Save the data
$id = wp_insert_attachment( $attachment, $upload[ 'file' ], $parent_post_id );
wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $upload['file'] ) );
return $this->ids[] = $id;
}
Ils ont également inclus des exemples d’images dans leurs tests. Voici un exemple de la façon dont ils appellent la méthode _make_attachment()
dans l'un de leurs tests:
function test_insert_image_no_thumb() {
// this image is smaller than the thumbnail size so it won't have one
$filename = ( DIR_TESTDATA.'/images/test-image.jpg' );
$contents = file_get_contents($filename);
$upload = wp_upload_bits(basename($filename), null, $contents);
$this->assertTrue( empty($upload['error']) );
$id = $this->_make_attachment($upload);
// ...
Vous devriez donc pouvoir utiliser quelque chose comme ça pour télécharger une image pour votre test. Vous pouvez fournir l'image à utiliser vous-même ou simplement utiliser l'un de ceux déjà inclus.
Si vous utilisez la suite de tests WordPress (vos classes de tests étendent WP_UnitTestCase), vous pouvez utiliser la fabrique fournie.
C'est à dire. si vos tests sont dans un répertoire tests
, vous pouvez créer tests/assets/dummy-attachment.jpg
$post = $this->factory->post->create_and_get();
$attachment_id = $this->factory->attachment->create_upload_object( __DIR__ . '/assets/dummy-attachment.jpg', $post->ID );