2017-01-31 121 views
1

我想在Laravel測試我的註冊表單。我這樣做:Laravel測試:創建一個新用戶

$this->visit('/auth/signup/free') 
     ->type('First Name', 'first_name') 
     ->type('[email protected]', 'email') 
     ->type('mypassword', 'password') 
     ->press('Get Started'); 

但我有一個錯誤500,因爲我那麼將用戶重定向到其測試當前用戶的某些屬性歡迎頁面,而這些的人不存在:

A request to [http://localhost/welcome] failed. Received status code [500]. 
Caused by 
exception 'ErrorException' with message 'Undefined property: App\Models\User::$active' in D:\workspace\myproject\app\Models\User.php:48 
Stack trace: 
#0 D:\workspace\myproject\app\Models\User.php(48): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(8, 'Undefined prope...', 'D:\\workspace\\my...', 48, Array) 
#1 D:\workspace\myproject\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(2670): App\Models\User->active() 
[...] 

用戶出現在數據庫中,但似乎Laravel無法訪問其任何屬性。

我該如何處理?

編輯:我正在使用Laravel 5.3。我有同樣的錯誤比這個傢伙:https://laracasts.com/discuss/channels/testing/51-phpunit-tests-fail-without-middleware/replies/89708

+0

您使用的是什麼版本的Laravel? – EddyTheDove

+0

我正在使用Laravel 5.3。 – Kevin

回答

0

更新

實際上,它取決於Laravel版本。

如果您使用的是最新版本(5.4),那麼我認爲你倒過來了key => value。 而不是

->type('[email protected]', 'email') 

->type('email', '[email protected]') 

對於所有的人。

然後,您需要聲明某些內容以查看用戶是否被正確重定向到主頁。例如:->assertPathIs('/home');

如果你在5.3,那麼你的關鍵值是沒問題的。只需在最後添加一個斷言即可查看。像:->seePageIs('/welcome');

+0

Laravel docs說' - > type('Taylor','name')'。所以他正確使用它。 –

+0

選中此:https://laravel.com/docs/5.4/dusk#creating-browsers – EddyTheDove

+0

我猜,他使用5.3或更高版本,而不是黃昏。 –

1

讓我猜。您可能正在觀察錯誤,如未經身份驗證訪問/welcome。檢查/welcome頁面是否爲未經授權的請求提供了此類錯誤。

使用Google搜索says (it is marked as a solution) Laravel在測試時可能會遇到加密cookie的問題。嘗試禁用EncryptCookies中間件進行測試。

Laravel 5.4中的黃昏確實表現得像一個真正的瀏覽器,它可能會幫助你。

+0

我有一箇中間件在這個頁面上重定向用戶,如果沒有連接,所以這個應該永遠不會出現。我試圖禁用這個中間件沒有成功。用戶將重定向到歡迎頁面,因爲我們點擊「註冊」按鈕,然後創建用戶,登錄並直接重定向他。 – Kevin