[英]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.