2016-10-16 13 views
1

私はLarabook series at Laracastsを通過しましたが、私の問題の解決策を見つけることができないようです。私のコードは、ブラウザで完璧に機能していますが、ユーザーがログインしていないので、私の機能テストが失敗している。これはSignUpTestあり、問題はそれがログインしていないということです $I->assertTrue(Auth::check());Larabookテストエラー - ユーザーをログインできません

$I = new FunctionalTester($scenario); 
$I->am('guest'); 
$I->wantTo('sign up for a Larabook account'); 

$I->amOnPage('/'); 
$I->click('Sign Up!'); 
$I->seeCurrentUrlEquals('/register'); 

$I->fillfield('Username:', 'JohnDoe'); 
$I->fillfield('Email:', '[email protected]'); 
$I->fillfield('Password:', 'demo'); 
$I->fillfield('Password Confirmation:', 'demo'); 
$I->click('Sign Up'); 

$I->seeCurrentUrlEquals(''); 
$I->see('Welcome to Larabook'); 
$I->seeRecord('users', [ 
    'username' => 'JohnDoe' 
]); 


$I->assertTrue(Auth::check()); 

最後のビットまでが合格しますユーザーAuth::check()はfalseを返します。私はJefferyの手紙を手紙にたどり、それがなぜ機能していないのか理解できません。

SignInCeptのために、私は同じ問題を持っている

$I = new FunctionalTester($scenario); 
$I->am('a larabook member'); 
$I->wantTo('login to my larabook account'); 

$I->signIn(); 
$I->seeInCurrentUrl('/statuses'); 
$I->see('Post a status'); 
$I->assertTrue(Auth::check()); 

サインイン方法

public function signIn() 
    { 
     $email = '[email protected]'; 
     $username = 'Foobar'; 
     $password = 'foo'; 

     $this->haveAnAccount(compact('email', 'username', 'password')); 

     $I = $this->getModule('Laravel4'); 

     $I->amOnPage('/login'); 
     $I->fillField('email', $email); 
     $I->fillField('password', $password); 
     $I->click('Sign In'); 
    } 

再び、それは、資格情報を取り込んでも、状況に行くのでテストがいるassertTrueで失敗しますurlしかし、何らかの形でユーザーはまだログインしていません。

signInメソッドを呼び出すと、すべての機能テストが失敗します。誰もがなぜログインしていないのか教えてもらえますか?

+0

'Auth :: check()'はあなたがここで呼び出すべき方法ですか?私はLaravelと一緒に働いたことがないので、間違っているかもしれませんが、現在のアプリのコンテキスト内で、authを確認する一般的な方法のようです。この場合、テストしているenvではなく、テストを実行するenvになります。私はテストされたenvがカプセル化され、分離されると期待します。それが他のフレームワークでどのように動作するかがその方法です。 – michaJlS

+0

これはチュートリアルで使用されているものですが、認証されたユーザーの$ I-> seeAuthentication();を調べるlaravel4モジュールテストメソッドも使用しましたが、認証されたユーザーがいないというエラーもスローされます。私の問題は、ユーザーがログインしていないことです。 –

答えて

0

問題は、デフォルトではapp\config\testing\session.phpにあり、ドライバはarrayに設定されています。つまり、データの永続性は発生しません。だから解決策は、databaseまたはcookieのいずれか、またはphp_docセクションで提供されているもののいずれかに変更することです。私の場合、私はcookieを使用し、すべてのテストに合格しました。

関連する問題