Laravel Mockery Failing Test - PullRequest
       10

Laravel Mockery Failing Test

0 голосов
/ 23 сентября 2018

Мне просто интересно, я пытаюсь создать этот тестовый пример, но он продолжает терпеть неудачу.Есть ли что-то, чего мне не хватает при использовании Mockery?

 /** @test */
function can_store_podcast_thumbnail()
{
    $podcast = factory(Podcast::class)->make([
        'feed_thumbnail_location' => 'https://media.simplecast.com/podcast/image/279/1413649662-artwork.jpg',
    ]);

    $mockedService = Mockery::mock(\App\PodcastUploadService::class);
    $mockedService->shouldReceive('storePodcastThumbnail')
        ->with($podcast)
        ->once()
        ->andReturn(true);

    $podcastUploadService = new \App\PodcastUploadService();
    $podcastUploadService->storePodcastThumbnail($podcast);
}

Это ошибка, которую я получаю:

Mockery\Exception\InvalidCountException: Method storePodcastThumbnail(object(App\Podcast)) from Mockery_2_App_PodcastUploadService should be called

ровно 1 раз, но вызывается 0 раз.

Просто интересно,

Спасибо!

1 Ответ

0 голосов
/ 24 сентября 2018

Предположим, вы хотите протестировать класс Bar, который зависит от класса Foo:

/**
 * This is the Dependency class
 */
class Foo
{
    public function fooAction()
    {
        return 'foo action';
    }
}

/*
 * This is the class you want to test, which depends on Foo
 */
class Bar
{
    private $foo;

    public function __construct(Foo $foo)
    {
        $this->foo = $foo;
    }

    public function barAction()
    {
        return $this->foo->fooAction();
    }
}

Теперь, когда вы тестируете Bar, вы скажете, что при запуске barAction() вы ожидаете, что fooAction()вызывается и возвращает фиктивный результат:

$fooMock = Mockery::mock(Foo::class);
$barTest = new Bar($fooMock);

$fooMock->shouldReceive('fooAction')->andReturn('mockReturn');

$result = $barTest->barAction();

$this->assertEquals('mockReturn', $result);

В примере я передал объект Foo на уровне конструктора, но работает так же, если вы передадите его на уровне функции

Я надеюсь, что этопомогает!

...