簡體   English   中英

PHPUnit測試-無法斷言實際大小11935與預期大小3相匹配

[英]PHPUnit test - Failed asserting that actual size 11935 matches expected size 3

我是phpunit的新手,並嘗試編寫一個斷言創建了三個注釋的測試,但是我從數據庫中獲取了所有注釋。

    /** @test */
    public function it_gets_notes()
    {
        $address = Address::first();
        $notes = factory(AddressNote::class, 3)->create(['address_id' 
        => $address->id]);
        $found = $this->notesClass->getData(['address_id' => $address-
        >id]);
        $this->assertCount(3, $found);
    }
}

Address和AddressNote模型工作正常。 我認為我對getData方法最困惑,我知道我需要覆蓋我的代碼。 有人看到我所缺少的內容會在標題中產生錯誤嗎?

如果在運行create方法后需要檢查差異 ,則在添加它們之前和之后保存$found ,減號將是您的數字:

public function it_gets_notes()
{
    $address = Address::first();
    $found = $this->notesClass->getData(['address_id' => $address->id]);
    $notes = factory(AddressNote::class, 3)->create(['address_id' => $address->id]);
    $foundAfter = $this->notesClass->getData(['address_id' => $address->id]);
    $difference = count($foundAfter) - count($found);
    $this->assertEquals(3, $difference);
}

請注意,您需要將assertEquals()與3和現在的差異一起使用,而不是assertCount() ,因為您正在比較數字。

我不了解您的全部故事,但是我認為您的第一個錯誤是您沒有創建測試數據庫。
因此,這將是第一步-除了您的databaseName(無論名稱如何)之外,還創建一個databaseName_test。
還有一些其他步驟-在.env文件中,將databaseName的名稱更改為databaseName_testing-但僅在進行測試時(然后立即回滾到原始的databaseName)。
但是,問題仍然存在(PHP單元不是完美的工具,就像PHP一樣),這是可以提供幫助的技巧。
代替:

    $this->assertEquals(3, $difference);

寫:

    $this->assertEquals(11935, $difference); //the number is specific for your case

是的,這很愚蠢,但應該可以...

暫無
暫無

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

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