2017-05-30 6 views
0

ログインできません:Laravel 5.4テスト - 私は次のコードで私のLaravelのテストを持つユーザーとしてログインしようとしている

1) Tests\Feature\AdminTest::test_admin_can_create_clients

Expected status code 200 but received 403. Failed asserting that false is true.

:私は常に失敗を取得していますが

class AdminTest extends TestCase 
{ 
    use DatabaseMigrations; 

    public function setUp() 
    { 
     parent::setUp(); 
     $this->admin = factory(User::class)->create([ 
       'is_admin' => true, 
      ]); 
    } 

    public function test_admin_can_create_clients() 
    { 
     $this->startSession() 
      ->actingAs($this->admin, 'web') 
      ->get('/clients') 
      ->assertStatus(200); 
    } 
} 

私はいくつかのグーグルをしたとき私はstartSessionに持っていることがわかったが、それでもうまくいきませんでした。

私はbeを使用してみましたが、次のエラーを得た:

1) Tests\Feature\AdminTest::test_admin_can_create_clients

Error: Call to a member function get() on null

は、どのように私は私のテストを介してユーザーにログインし、それは同じテストに複数のページにわたって持続持つことができますか?

ありがとうございました

+0

「be」と偽装するユーザー – Thamilan

+0

すでに試してみました。更新を参照してください。 @Thamilan – Shiv

+0

私はそれが多用されているのか分かりませんが、私自身のアプリケーションでは '$ this-> actingAs($ user) - > get(...);'を使って 'startSession'を削除し、 '/ web /'引数 – milo526

答えて

0

どうやってですか?

class AdminTest extends TestCase 
{ 
    use DatabaseMigrations; 

    public function setUp() 
    { 
     parent::setUp(); 
     $this->admin = factory(User::class)->create([ 
       'is_admin' => true, 
      ]); 
     // Impersonate as the currently created admin user 
     $this->be($this->admin); 
    } 

    public function test_admin_can_create_clients() 
    { 
     // You do not need to use actingAs() if you're already using be() 
     $this->get('/clients')->assertStatus(200); 
    } 
} 

これはうまくいきます。

関連する問題