blog

プログラミングとひとりごと。

PHPフレームワーク Laravel入門(24)302じゃなくて500番。。。/ Chapter7-5 ユニットテスト 

PHP 7.1.25

Laravel Framework 5.8.31

Vagrant Version: 2.1.1 

PHPフレームワーク Laravel入門

PHPフレームワーク Laravel入門

 

 P.331 指定アドレスにアクセスする

  • HelloTest.phpに記述する。

f:id:marimoko3:20190818094326p:plain

$response = $this->get('/hello');
$response->assertStatus(302);   ←HelloTest.php:36

認証が必要なページへのアクセスのレスポンスのステータスコードは302だそうです。 


/helloにアクセスするとこうなっている。

General error: 1 no such table:

f:id:marimoko3:20190818094633p:plain

 

エエット、何がいけないんでしょうか・・・

 

qiita.com

www.ritolab.com

www.ritolab.com

 

PHPフレームワーク Laravel入門(23) Chapter7-5 ユニットテスト

PHP 7.1.25

Laravel Framework 5.8.31

Vagrant Version: 2.1.1 

PHPフレームワーク Laravel入門

PHPフレームワーク Laravel入門

 

 Chapter7-5 ユニットテスト

  • コマンドを実行する

touch database/database_test.sqlite

<env name="DB_DATABASE" value="database/database_test.sqlite"/>

↓他のタグと合わせると、こうかな?

<server name="DB_DATABASE" value="database/database_test.sqlite"/>

  • /database/factories/ModelFactory.phpを開く

ない。

UserFactory.phpがあるのでそれを開く

UserFactory.phpの内容↓

<?php

/** @var \Illuminate\Database\Eloquent\Factory $factory */
use App\User;
use Illuminate\Support\Str;
use Faker\Generator as Faker;

/*
|--------------------------------------------------------------------------
| 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) {
    return [
        'name' => $faker->name,
        'email' => $faker->unique()->safeEmail,
        'email_verified_at' => now(),
        'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi',  , // password
        'remember_token' => Str::random(10),
    ];
}); 

  • UserFactory.phpに追記する。

$factory->define(App\Person::class,function (Faker $faker){
  return [
    'name' => $faker->name,
    'mail' => $faker->safeEmail,
    'age' => random_int(1,99),
  ];
});

P.328  ユニットテストスクリプト作成

  • コマンドを実行

php artisan make:test HelloTest

 /tests/Featureフォルダの中にHelloTest.phpファイルができる。

  • HelloTest.phpに記述する。

public function testHello(){
$this->assertTrue(true);

$arr = [];
$this->assertEmpty($arr);

$msg ="Hello";
$this->assertEquals('Hello', $msg);

$n = random_int(0,100);
$this->assertLessThan(100,$n);
}

vendor/bin/phpunit

f:id:marimoko3:20190818085106p:plain

HelloTest.phpの34行目がおかしいよ、と表示されている。

スペル間違えてたので直して、

もう一度実行。

f:id:marimoko3:20190818085211p:plain

TestResponse.phpの151行目はこれ

f:id:marimoko3:20190818085630p:plain

ExampleTest.phpの19行目はこれ

f:id:marimoko3:20190818085434p:plain

> $response->assertStatus(200);

この辺はデフォルトのままなのだが、

404が返ってきたから、200(成功)じゃないよってことで

www.seohacks.net

 

トップページがないからでしょう。

ルーティングにも設定してないし。

f:id:marimoko3:20190818090338p:plain

views/welcome.blade.phpがあるので

ルーティングの設定でweb.php

Route::get('/',function(){
return view('welcome');
});

として(これは最初から書かれている設定なので、私が自分でいらないと思って消したのだと思われます)

f:id:marimoko3:20190818090859p:plain

/でアクセスして、画面が表示される状態にして

もう一度、PHPUnitを実行すると

f:id:marimoko3:20190818091032p:plain

エラーが消えました。

めでたしめでたし。

 

↓リファレンス

HTTPテスト 5.8 Laravel