第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Laravel 無(wú)法使用模擬的服務(wù)和對(duì)象測(cè)試作業(yè)。Mockery 間諜無(wú)法檢測(cè)到被調(diào)用的方法

Laravel 無(wú)法使用模擬的服務(wù)和對(duì)象測(cè)試作業(yè)。Mockery 間諜無(wú)法檢測(cè)到被調(diào)用的方法

PHP
慕田峪7331174 2022-10-28 09:36:05
我想測(cè)試我的工作功能:namespace App\Jobs;use Illuminate\Bus\Queueable;use Illuminate\Contracts\Queue\ShouldQueue;use Illuminate\Foundation\Bus\Dispatchable;use Illuminate\Queue\InteractsWithQueue;use App\Model\Model;use App\Services\Service;class MyJob implements ShouldQueue{    use Dispatchable;    use InteractsWithQueue;    use Queueable;    /**     * Undocumented variable     *     * @var User     */    private $model;    public function __construct(Model $model)    {        $this->model=$model;    }    public function handle(Service $service): void    {        if($this->model->shouldCallService){            $service->method();        }    }}我想用一個(gè)純單元測(cè)試來(lái)測(cè)試它:namespace Tests\Jobs;use Tests\TestCase;use Mockery;use App\Services\MyService;use App\Jobs\MyJob;use App\Model\MyModel;class TestJob extends TestCase{    public function testMethod()    {                $this->app->instance(MyModel::class,\Mockery::mock(MyModel::class,function($mock){            $mock->shouldReceive('save')->andReturn(true);        }));        $model=factory(MyModel::class)->create([            'shouldCallService'=>true,        ]);        $mockedNewsLetterService=Mockery::spy(MyService::class);        $mockedNewsLetterService->shouldReceive('method')->once();        $job=new MyJob($model);        $job->handle($mockedNewsLetterService);        $mockedNewsLetterService->shouldHaveReceived()->method()->with($model);    }    public function tearDown() {        parent::tearDown();        Mockery::close();    }}但是一旦我通過(guò)以下方式測(cè)試它:./vendor/bin/phpunit ./test/Jobs/TestJob.php我得到以下輸出:PHPUnit 7.5.20 by Sebastian Bergmann and contributors.E                                                                   1 / 1 (100%)Time: 46.12 seconds, Memory: 34.00 MBThere was 1 error:ERRORS!Tests: 1, Assertions: 3, Errors: 1.你知道為什么間諜無(wú)法檢測(cè)到調(diào)用method方法嗎?
查看完整描述

1 回答

?
皈依舞

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊

你錯(cuò)誤地稱(chēng)之為shouldHaveReceived嘲弄。


使用這種方法:


$mockedNewsLetterService->shouldHaveReceived(`method`)->with($model);

此外,為了測(cè)試我使用的作業(yè)調(diào)度bindMethod,app因此測(cè)試應(yīng)該是:


public function testMethod()

{        

    $this->app->instance(MyModel::class,\Mockery::mock(MyModel::class,function($mock){

        $mock->shouldReceive('save')->andReturn(true);

    }));


    $model=factory(MyModel::class)->create([

        'shouldCallService'=>true,

    ]);


     $mockedNewsLetterService=Mockery::spy(MyService::class);


    $this->app->bindMethod(NewsLetterSubscribeUserJob::class.'@handle', function ($job, $app) use ($mockedNewsLetterService){

        return $job->handle($mockedNewsLetterService);

    });


    MyJob::dispatchNow($model);

    $mockedNewsLetterService->shouldHaveReceived('method')->with($model);

}

如您所見(jiàn),我使用該應(yīng)用程序來(lái)處理作業(yè)調(diào)度。另外,為了避免在測(cè)試期間使用第 3 方服務(wù),我也使用dispatchNow了這樣的服務(wù),以便我的工作不被排隊(duì)。


查看完整回答
反對(duì) 回復(fù) 2022-10-28
  • 1 回答
  • 0 關(guān)注
  • 123 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)