簡體   English   中英

在Laravel中使用Mockery / phpUnit時出錯

[英]Error using Mockery/phpUnit in Laravel

我是一個新手開發人員,試圖為現有的laravel應用程序啟動測試套件,但我沒有測試經驗。 現在我只是試圖進行一些測試,以獲得一些信心和經驗來編寫更多實質性測試。 我正在嘗試測試一個模型上的關系(我意識到這不是一個非常明智的測試),並試圖創建一個模擬的模型對象(我也理解在sqlite數據庫的內存中做這個更好但是主要的這里的目標是測試控制器,但我不知道如何處理那里的身份驗證問題)。 我有以下簡單,愚蠢的測試:

public function testFoo()
{
    $lead = m::mock('Lead');

    $this->mock->shouldReceive('program')->once();

    $this->assertEquals($lead->program_id, $lead->program->id);
}

但是我收到以下錯誤:

LeadTest::testFoo
BadMethodCallException: Received Mockery_0_Lead::getAttribute(), but no expectations were specified

我不明白這個錯誤試圖告訴我什么,我發現沒有幫助谷歌搜索問題或閱讀我能找到的文檔。

我假設我沒有設置預期的返回值,但這是一個相當普遍的測試,硬編碼預期的返回值似乎不對。 我在這里錯過了什么?

我只是測試一個Laravel關系,以確保我正確設置/實現了一些東西:

public function program()
{
    return $this->belongsTo('Program');
}

問題是我錯過了預期的回報值。 應該是這樣的:

$this->mock->shouldReceive('program')->once()->andReturn(someObjectOrValue);

斷言應該是這樣的:

$this->assertEquals(someObjectOrValue, $lead->program->id);

Mockery文檔比我原先想象的要冗長得多。 http://docs.mockery.io/en/latest/reference/expectations.html

暫無
暫無

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

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