Hatenaブログ移動します🏡
Hatenaブログの画像を全て消したら過去の記事の画像全て表示されなくなってしまったので、新しくブログ作りました
よく使うけど忘れがちなGitコマンド
add
addした変更を確認する方法
git diff --cached ファイル名
addした変更を全て取り消したい時
git reset .
ファイル指定してaddを取り消したい時
git reset index.php
stash
stashされたファイル一覧を見たい時
git stash show
ファイルごとのstashした内容を確認する
git diff HEAD..stash@{0} ファイル名
reset
commitを取り消して、addの状態に戻したい場合
git reset --soft HEAD^
ローカル環境を別端末(iPhoneとか)から見る方法
下記ページよりダウンロード
ngrok - download
zipを解凍するか、以下のコマンドで解凍
unzip ~/Downloads/ngrok.zip
pathが通ってるディレクトリに配置する
mv ~/Downloads/ngrok /usr/local/bin/
ngrok起動させると以下の画面が立ち上がる
ngrok http 8880
今回の場合はhttp://5077cab0.ngrok.io にアクセスするとローカル環境をiPhoneでも確認できる
Laravelとdockerの環境でMailHogを使ってメール送信テストを実行するには
前までlogにメールを吐き出していたけど、MailHogを使おうということになりました
MailHogのコンテナを作る
今回は以下のようにすでにdocker-compose.ymlにMailHogのことが書かれていました
### Mailhog ################################################ mailhog: build: ./mailhog ports: - "1025:1025" - "8025:8025" networks: - frontend - backend
Dockerを再起動させる
laradockディレクトリの中で以下のコマンドを実行
docker-compose up -d mailhog
docker ps でMailHogのコンテナが新しく作成されているか確認します
.env.dusk.localのメール設定
MAIL_DRIVER=smtp MAIL_HOST=mailhog MAIL_PORT=1025 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null
あとはメールがhttp://localhost:8025に届いていればOK
(もしphp artisan config:cache なんてしてしまったら、php artisan cache:clearをすればいい👏)
あとローカルでMailHog使うならbrewで入れることができるらしい
// インストール brew install mailhog // 起動 brew services start mailhog
はじめてテストを書きました
初めてテストを書いたんですよ、簡単なのですが
なので忘れないようにメモしておきます
テスト生成と実行コマンド
環境はLaravelで、PHPUnitで今回はログイン画面のテストを書いていこうと思います
まずテストの生成
php artisan make:test LoginTest
tests/Feature/LoginTest.php にファイルが作られます
テストを実行するには、ターミナルでphpunitコマンドを実行すれば大丈夫です
phpunit
テストファイルの命名規則
テストを作る際にルールがあります
・テストファイルはファイル名を、hogeTest.phpとすることでテスト対象となる
・メソッドは、testHoge()とするか、@testコメントをつけておくとtestと認識される
上記をふまえてテストを書いていきます
テストコード
まず前のテストデータが次に実行されるテストへ影響をあたえないように、各テストが終了するごとにデータベースをリセットさせるためトランザクションを使います
use DatabaseTransactions;
次にユーザーデータを作ります
テストを実行する前に行いたいのでsetUp()に書いていきます
<?php /** * @var \App\Models\User; */ public $user; /** * Setup the test environment. */ protected function setUp() { parent::setUp(); $this->user = factory(User::class)->state('active')->create(); }
UserFactory.phpのコードは省略します
あと factory()って何?ってなったかと思います
factory()とは
テスト実行前に、何件かのレコードをデータベースに挿入する必要があります。こうしたテストデータを作る時に、手動でそれぞれのカラムへ値を指定する代わりに、Laravelではモデルファクトリを使用します。
引用元:https://readouble.com/laravel/5.5/ja/database-testing.html
なるほど
準備は終わったのでテストコードを書いていきます
<?php /** * @test */ public function ログインしていない状態ユーザーのみログイン画面が表示される() { //ログインしてない状態で/loginにアクセスした場合 $response = $this->get('/login'); $response->assertStatus(200); //ログインしている状態で/loginにアクセスした場合 $response = $this->actingAs($this->user)->get('/login'); $response->assertStatus(302); }
actingAs()を利用することで作ったユーザデータを認証済み状態にすることができ
ログインしてない状態で/loginにアクセスした場合、クライアントのレスポンスが200
ログインしている状態で/loginにアクセスした場合、クライアントのレスポンスが302
ならOKというテストを作りました
ログインしている状態で/loginにアクセスした場合クライアントから帰ってくるレスポンスが何番なのかわからない場合は、普通に調べてもいいけどChromeの検証で
Network → Preservelogをチェック → /loginにアクセス → 下の項目のloginをクリック → Status Codeを確認
すればOK
実行結果
緑になったので大丈夫
以下全体コード
<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\User; use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Foundation\Testing\DatabaseTransactions; class LoginTest extends TestCase { use DatabaseTransactions; /** * @var \App\Models\User; */ public $user; /** * Setup the test environment. */ protected function setUp() { parent::setUp(); $this->user = factory(User::class)->state('active')->create(); } /** * @test */ public function ログインしていない状態ユーザーのみログイン画面が表示される() { $response = $this->get('/login'); $response->assertStatus(200); $response = $this->actingAs($this->user)->get('/login'); $response->assertStatus(302); } }
プログラムを修正したら自動的にHerokuにも反映してほしい
herokuに変更箇所をpushしようとしたらエラーがおきた
gitがリモートのリポジトリを参照出来ていないのが原因らしいので、リモートにherokuを追加します
まず .git/config を確認するとremoteの参照先にherokuがないので
以下のコマンドで登録する
参考:Heroku にある Git リポジトリを楽に remote に設定する - Qiita
heroku git:remote --app appname
コマンド実行後の.git/config
ちゃんとリモートにheroku追加できてる
これでデプロイできた