簡體   English   中英

Laravel 嘲弄 - 這個測試沒有執行任何斷言

[英]Laravel Mockery - This test did not perform any assertions

我正在嘗試創建一個嘲弄單元測試,但它給了我這個錯誤

這個測試沒有執行任何斷言

public function testGetById()
{
    $mock = Mockery::mock(PostService::class)->makePartial();
    $mock->shouldReceive('getById')
        ->withSomeOfArgs(1);
        $mock->getById(1);
}

. 通過id獲取→這個測試沒有執行任何斷言\tests\Unit\PostControllerTest:php:30

測試:1 次風險時間:0.32 秒警告:Windows 平台不支持 TTY 模式。

很抱歉,我無法 100% 幫助您,我現在無法設置測試項目來嘗試此操作,但您可以嘗試:

public function testGetById()
{
    $mock = Mockery::spy(PostService::class);
    // Bind the mock to the Service Container so it gets injected (DI)

    // Execute the code that would run that mock
    $mock->shouldHaveReceived('getById')
        ->withSomeOfArgs(1);
}

如果在所需條件下調用了所需的方法,則間諜允許您進行間諜活動 如果你mock ,你只是在“偽造”它將返回或做什么,如果你spy ,你將能夠斷言方法發生了什么。

Mockery 官方文檔中閱讀更多相關信息。

有兩種選擇。

選項1:

  • 確保你已經添加了一個帶有 `Mockery::close(); 的 tearDown 方法;
  • 然后使用任何斷言。
  • 如果你真的不需要,使用$this->assertTrue(true);

選項 2:

您還可以擴展Mockery\Adapter\Phpunit\MockeryTestCase而不是通常的PHPUnit\Framework\TestCase 這樣,您根本不必添加 phpunit 斷言。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM