🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

テスト駆動開発

テスト駆動開発は、 プログラム開発手法の一種で、 プログラムに必要な各機能をテストとして書き、 そのテストが動作する必要最低限な実装を行い コードを洗練させる、といったサイクルを繰り返す手法の事です。

Q&A

1回答

1485閲覧

Laravel6でduskのログインテストがエラーになる

G.P.M

総合スコア13

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

テスト駆動開発

テスト駆動開発は、 プログラム開発手法の一種で、 プログラムに必要な各機能をテストとして書き、 そのテストが動作する必要最低限な実装を行い コードを洗練させる、といったサイクルを繰り返す手法の事です。

0グッド

0クリップ

投稿2020/11/29 06:15

環境

Laravel6.20
Docker

解決したいこと

php artisan dusk tests/Browser/LoginTest.php --env=testing

を実行すると

Actual path [/login] does not equal expected path [/event].

となりエラーが出てきます。どうやらきちんとログインできていないみたいです。

LoginTest.php

LoginTest.php

1<?php 2 3namespace Tests\Browser; 4 5use App\User; 6use Illuminate\Support\Facades\Hash; 7use Laravel\Dusk\Browser; 8use Tests\DuskTestCase; 9use Illuminate\Foundation\Testing\RefreshDatabase; 10 11 12class LoginTest extends DuskTestCase 13{ 14 // use DatabaseMigrations; 15 use RefreshDatabase; 16 /** 17 * A Dusk test example. 18 * 19 * @return void 20 */ 21 public function testLogin() 22 { 23 $user = factory(User::class)->create(); 24 25 $this->browse(function (Browser $browser)use($user){ 26 $browser->visit('/login') 27 ->type('email',$user->email) 28 ->type('password',$user->password ) 29 ->press('ログインする') 30 ->assertPathIs('/event'); 31 }); 32 } 33 34}

UserFactory.php

<?php /** @var \Illuminate\Database\Eloquent\Factory $factory */ use App\User; use Faker\Generator as Faker; use Illuminate\Support\Str; /* |-------------------------------------------------------------------------- | Model Factories |-------------------------------------------------------------------------- | | This directory should contain each of the model factory definitions for | your application. Factories provide a convenient way to generate new | model instances for testing / seeding your application's database. | */ $factory->define(User::class, function (Faker $faker) { // static $password; return [ 'name' => $faker->name, 'email' => $faker->unique()->safeEmail, 'password' => $faker->password, 'email_verified_at' => $faker->dateTime(), ]; });

factoryでuserを予め作成し、その値でログインするという実装です。

やったこと

スクショでエラー部分を確認したところ、どうやらメールアドレスの値が正しくないようです。

userのバリデーション

$validatedData = $request->validate([ 'name' =>['required'], 'email' => ['required','unique:users'], 'password' => ['required','min:8'] ]);

わかる方よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

fakerで作ったパスワードはbcryptされていないので、パスワードとして不適切

bcrypt('password')

のような感じで固定PWにして
typeにもpasswordを入れて固定で突破させるか

動的にテストしたければ
factoryのcreateに外部から注入してテストしてください

投稿2020/11/29 06:37

mikkame

総合スコア5036

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

G.P.M

2020/11/29 07:02

回答ありがとうございます。 userfactoryとlogintestのpasswordの所をそれぞれ 'password' => bcrypt('password'), ->type('password',bcrypt('password')) としましたが変わらずエラーが出ました、、、 何か間違いがありますでしょうか?
mikkame

2020/11/29 08:30

->type('password', 'password')) です。 ユーザーデータにはハッシュ化されたデータを保存しますが 検証時には平文とハッシュ化データを付き合わせます
G.P.M

2020/11/29 08:38

ありがとうございます。 修正してもダメでした、、(泣)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問