Тест Mocking модели Laravel с PHPUnitPhp

Кемеровские программисты php общаются здесь
Anonymous
Тест Mocking модели Laravel с PHPUnit

Сообщение Anonymous »

Я пытаюсь имитировать метод обновления в PHPUnit, но пока метод mustReceive('update') не вызывается.
PostServiceTest.php

Код: Выделить всё

    public function test_can_update_a_post(): void
{
$mockedPostModel = Post::factory()->make();
$mockedTitle = 'Updated Title';
$mockedSlug = Str::slug($mockedTitle);
$mockedPostData = ['title' => $mockedTitle, 'slug' => $mockedSlug];
$updatedPostModel = Post::factory()->make($mockedPostData);
\Log::info($mockedPostModel);
\Log::info($updatedPostModel);

$postMock = Mockery::mock(Post::class);
$postMock->shouldReceive('findOrFail')->once()->with(1)->andReturn($mockedPostModel);
$postMock->shouldReceive('update')->once()->with($mockedPostData)->andReturn($updatedPostModel);

$postService = new AdminPostService($postMock);
$post = $postService->findOrFail(1);
\Log::info($post);
$post->update($mockedPostData);
\Log::info($post);

// $this->assertInstanceOf(Post::class, $post);
// $this->assertEquals($post->title, $mockedTitle);
// $this->assertEquals($post->slug, $mockedSlug);
}
Журналы

Код: Выделить всё

[2024-05-29 14:20:54] testing.INFO: {"title":"Otho Pfeffer","slug":"otho-pfeffer"}
[2024-05-29 14:20:54] testing.INFO: {"title":"Updated Title","slug":"updated-title"}
[2024-05-29 14:20:54] testing.INFO: {"title":"Otho Pfeffer","slug":"otho-pfeffer"}
[2024-05-29 14:20:54] testing.INFO: {"title":"Otho Pfeffer","slug":"otho-pfeffer"}
Моим ожидаемым результатом должна быть 4-я строка журнала, которая должна соответствовать 2-й строке журнала, поскольку это результат в $post->update($mockedPostData);
Выполнение $result = $post->update($mockedPostData); возвращает нулевое/пустое значение

Подробнее здесь: https://stackoverflow.com/questions/785 ... th-phpunit

Вернуться в «Php»