Laravel 使用phpunit和mockry进行图像上传测试

Laravel 使用phpunit和mockry进行图像上传测试,laravel,phpunit,laravel-5.1,mockery,Laravel,Phpunit,Laravel 5.1,Mockery,我正在尝试使用Laravel和PhpUnit测试图像上传。在测试课之外,它工作得很好。但是当我运行测试时,我得到以下错误: 1) App\UploadTest::它在帖子上上传图片 Mockry\Exception\NoMatchingExpectationException:没有匹配的处理程序 找到 mockry_0_Symfony_组件_HttpFoundation_文件_上载文件::move(“帖子/照片”, “/nowfoo.jpg”)。该方法是意外的或其参数是错误的 不匹配此方法的预期

我正在尝试使用Laravel和PhpUnit测试图像上传。在测试课之外,它工作得很好。但是当我运行测试时,我得到以下错误:

1) App\UploadTest::它在帖子上上传图片 Mockry\Exception\NoMatchingExpectationException:没有匹配的处理程序 找到 mockry_0_Symfony_组件_HttpFoundation_文件_上载文件::move(“帖子/照片”, “/nowfoo.jpg”)。该方法是意外的或其参数是错误的 不匹配此方法的预期参数列表

我的测试文件是:

<?php

namespace App;

use Illuminate\Foundation\Testing\DatabaseTransactions;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Mockery as m;
use App\BBImage;

class UploadTest extends \TestCase
{

    /**
     * @test
     */

    public function it_uploads_an_image_on_post()
    {
        $file = m::mock(UploadedFile::class, [
            'getClientOriginalName'      => 'foo',
            'getClientOriginalExtension' => 'jpg'
        ]);


        $file->shouldReceive('move')
            ->once()
            ->with('posts/photos', 'nowfoo.jpg');


        $photo = new BBImage($file);


        $this->assertEquals('posts/photos/nowfoo.jpg', $photo->makePhoto());


    }

}

function time() { return 'now'; }

function sha1($path) {return $path;}

我认为问题只是打字错误。你应该改变期望:

$file->shouldReceive('move')
        ->once()
        ->with('posts/photos', 'nowfoo.jpg');
为此:

$file->shouldReceive('move')
        ->once()
        ->with('posts/photos', '/nowfoo.jpg');
$file->shouldReceive('move')
        ->once()
        ->with('posts/photos', '/nowfoo.jpg');