5

我在Laravel 5.0,在我的請求類我使用的是不同的袋子來顯示驗證錯誤消息編寫單元測試assertSessionHasErrors。LARAVEL 5.0 +單元測試 - 用不同的包裝袋

我使用這在我的文件:

/* ExampleTest.php */ 
class ExampleTest extends TestCase { 
    public function testPostWithoutData(){ 
     $response = $this->call('POST', 'url/to/post',[ 
      'my_field' => '' 
     ]); 
     $this->assertSessionHasErrors('my_field'); 
    } 
} 

如果我運行測試,就不能得到正確的:

/* ExampleRequest.php */ 
namespace App\Http\Requests; 

use App\Http\Requests\Request; 
use Illuminate\Support\Facades\Auth; 

class ExampleRequest extends Request { 

    protected $errorBag = 'otherbag'; 

    public function rules(){ 
     return [ 
      'my_field' => 'required' 
     ]; 
    } 
} 

在我的測試文件,我使用的這個測試斷言和返回這個問題:

Session missing error: my_field Failed asserting that false is true .

如果我拿出從請求文件中$errorBag屬性,我沒有問題。

我可以根據需要提供更多細節。

+0

你能解釋一下爲什麼你的對象中有'protected $ errorBag ='otherbag';'?這是做什麼的,爲什麼? –

+0

因爲我有兩個地方可以顯示erros im我的看法...並且我處理它與不同的袋子.... – giordanolima

回答

2

您可以從會話存儲這樣獲得的備用袋:

$myBag = $this->app('session_store')->getBag('otherBag'); 
$this->assertTrue($myBag->any()); 

然而,Laravel不使用默認的備用袋,所以我假設你正在做在你的代碼的東西用會話處理程序註冊您的App\Request::$errorBag