phpunit laravel php
http://www.techigniter.in/blogs/tutorials/query-logging-in-laravel-5/
・requestの形を統一する
Mockery;
https://medium.com/laravel-4/laravel-4-controller-testing-48414f4782d0#.qreur0n73
・repositoriテスト
http://www.developer.com/services/testing-controllers-in-laravel-with-the-service-container.html
Mockery::
クラス内でnewしないようにする
http://tech.aainc.co.jp/archives/3918
https://readouble.com/laravel/5.1/ja/testing.html
----------
<?php
namespace Formativ;
use Illuminate¥Http¥Request;
use Str;
class PostRepository implements PostRepositoryInterface
{
public function __construct(Request $request)
{
$this->request = $request;
}
public function insert()
{
$data = [
title => $this->request->get( title )
subtitle => $this->request->get( subtitle )
body => $this->request->get( body )
author_id => $this->request->get( author )
slug => Str::slug($this->request->get( title ))
];
--------------
public function testNewUserRegistration()
{
$this->visit( /register )
->type( Taylor name )
->check( terms )
->press( Register )
->seePageIs( /dashboard );
}
メソッド 説明
$this->type($text $elementName) 指定したフィールドに「タイプ」します。
$this->select($value $elementName) ラジオボタンかドロップダウンフィールドを「選択」します。
$this->check($elementName) チェックボックスフィールドを「チェック」します。
$this->attach($pathToFile $elementName) フォームにファイルを「添付」します。
$this->press($buttonTextOrElementName) 指定したテキストか名前のボタンを「押し」ます。
seeJsonメソッドは渡された配列をJSONに変換します。次にそのJSONが、JSONレスポンス全体のいずれかに現れるかを確認します。ですから、他のプロパティーがJSONレスポンスに含まれていたとしても、指定した部分が存在する限り、テストはパスします。
JSONと一致するか確実に検証
指定した配列がアプリケーションから返されるJSONと完全に一致するかを確認したい場合は、seeJsonEqualsメソッドを使用してください。
<?php
class ExampleTest extends TestCase
{
/**
* 基本的な機能テストの例
*
* @return void
*/
public function testBasicExample()
{
$this->post( /user [ name => Sally ])
->seeJsonEquals([
created => true
]);
}
}
カスタムHTTPリクエスト
アプリケーションに対してカスタムHTTPリクエストを作成し、
完全なIlluminate¥Http¥Responseオブジェクトを取得したい場合は、callメソッドを使ってください。
public function testApplication()
{
$response = $this->call( GET / );
$this->assertEquals(200 $response->status());
}
laravel input と request の違い
フォームから一つの値を取得するにはInput::get()メソッドを使用します。
Blade操作|データ表示
{{ }}文は、XSS対策としてエスケープしてくれます。
1
{{ $name }}
{!! !!}文は、エスケープしません。
1
{!! $name !!}
CSRF対策
csrf_field関数を使うと、CSRF対策用のトークン値を持つフィールドを生成してくれます。
<form method= POST action= {{ url( login ) }} >
{{ csrf_field() }}
</form>
「VerifyCsrfTokenミドルウェア」にて、「リクエストのトークン」と「セッションのトークン」が一致するかチェックしてくれます。
configヘルパー関数でconfigデータを取得できます。
$value = config( app.timezone );
// デフォルト値指定
$value = config( app.timezone $default);
http://www.dn-web64.com/archives/web/laravel-cheat/
http://qiita.com/k-okada/items/c92a3f3594d751d42740
validate
in:foo bar ... ★これ 存在チェックこれでいいんじゃね?
exists:table column ★これつかえるんんじゃね?しかし複数キーだしな・・・
required_if:他のフィールド 値 ...★ アクションTBLの スクリプト メール
引数で指定された他のフィールドフィールドが、値のどれかを持っている場合に、このフィールドが入力されていることをバリデートします。
required_if:state:0 ★スクリプト実行が選択されているときに必須とする
$rules = [
name => required|max:40
gender => required|in:male female
age => digits_between:0 150
use_discount => boolean
coupon => required_if:use_discount 1|regex:/^[0-9a-zA-Z]{20}$/
];
・トレイリングスラッシュについて ★
URLは基本的に/exampleか/example/のどちらかに統一するのが通常かと思いますが、
Laravelは/なしの方に寄せるほうが断然楽です。開発が始まる前になくなるように根回ししましょう。
・laravel debugger は、
.env で
APP_DEBUG=false # 実際に公開するアプリケーションは必ずfalseを設定(true/false)
にすれば、app.php をさわらなくても laravel debuggerオフになるよ
・HOME_URL の設定
config/local/app.php で
//if (App::environment( local ))
をやろうとしたが、うまくいかなかったのであきらめた
→現状の env_application.php の if(/var/www/html/production.php)
で判断しよう! laravelにあわせようとしたができんかったね
・validate
in:foo bar ...
lavavelバリデートで以下を設定
title => required|in: あああ いいい ううう
すると、上3つ以外を入力すると以下のエラーになる
選択されたtitleは正しくありません。
selectboxに追加しよう
radio selectbox はこれ」対応する
・Config::get( app.timezone ) 設定
http://cheats.jesse-obrien.ca/