Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 嘲弄词的准确用法?_Php_Phpunit_Tdd_Mockery - Fatal编程技术网

Php 嘲弄词的准确用法?

Php 嘲弄词的准确用法?,php,phpunit,tdd,mockery,Php,Phpunit,Tdd,Mockery,我只是想知道,这是如何在PHPUnit中使用mocky的准确表示,还是你能想出一个更好的例子?本质上,我是在嘲笑我的PodcastUploadService,因为我不关心是否上传了podcast,而是关心调用该方法并为我的输入返回true <?php /** @test */ function can_store_podcast_thumbnail() { $podcast = factory(Podcast::class)->make([ 'feed_thumb

我只是想知道,这是如何在PHPUnit中使用mocky的准确表示,还是你能想出一个更好的例子?本质上,我是在嘲笑我的PodcastUploadService,因为我不关心是否上传了podcast,而是关心调用该方法并为我的输入返回true

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

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

我认为,如果你根本不关心是否上传了播客,就不应该为它编写测试

但是,如果你真的不关心它,你也不应该为它写代码

在当前的形式中,您的测试不会增加很多价值。实际上,它所测试的只是模拟框架是否工作。不过,这已经在其他地方测试过了,所以你在做双重工作

当您测试依赖于PodcastUploadService的服务时,mock是有意义的:您只想测试该服务,而不需要处理PodcastUploadService本身

有关更多信息,请参阅