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&yen;Http&yen;Request;
use Str;

class PostRepository implements PostRepositoryInterface
&#123;
public function __construct(Request &#36;request)
&#123;
&#36;this->request = &#36;request;
&#125;

public function insert()
&#123;
&#36;data = [
title => &#36;this->request->get( title )
subtitle => &#36;this->request->get( subtitle )
body => &#36;this->request->get( body )
author_id => &#36;this->request->get( author )
slug => Str::slug(&#36;this->request->get( title ))
];

--------------
public function testNewUserRegistration()
&#123;
&#36;this->visit( /register )
->type( Taylor name )
->check( terms )
->press( Register )
->seePageIs( /dashboard );
&#125;


メソッド 説明
&#36;this->type(&#36;text &#36;elementName) 指定したフィールドに「タイプ」します。
&#36;this->select(&#36;value &#36;elementName) ラジオボタンかドロップダウンフィールドを「選択」します。
&#36;this->check(&#36;elementName) チェックボックスフィールドを「チェック」します。
&#36;this->attach(&#36;pathToFile &#36;elementName) フォームにファイルを「添付」します。
&#36;this->press(&#36;buttonTextOrElementName) 指定したテキストか名前のボタンを「押し」ます。


seeJsonメソッドは渡された配列をJSONに変換します。次にそのJSONが、JSONレスポンス全体のいずれかに現れるかを確認します。ですから、他のプロパティーがJSONレスポンスに含まれていたとしても、指定した部分が存在する限り、テストはパスします。

JSONと一致するか確実に検証
指定した配列がアプリケーションから返されるJSONと完全に一致するかを確認したい場合は、seeJsonEqualsメソッドを使用してください。

<?php

class ExampleTest extends TestCase
&#123;
/**
* 基本的な機能テストの例
*
* @return void
*/
public function testBasicExample()
&#123;
&#36;this->post( /user [ name => Sally ])
->seeJsonEquals([
created => true
]);
&#125;
&#125;

カスタムHTTPリクエスト
アプリケーションに対してカスタムHTTPリクエストを作成し、
完全なIlluminate&yen;Http&yen;Responseオブジェクトを取得したい場合は、callメソッドを使ってください。

public function testApplication()
&#123;
&#36;response = &#36;this->call( GET / );

&#36;this->assertEquals(200 &#36;response->status());
&#125;


laravel input と request の違い

フォームから一つの値を取得するにはInput::get()メソッドを使用します。



Blade操作|データ表示
&#123;&#123; &#125;&#125;文は、XSS対策としてエスケープしてくれます。
1
&#123;&#123; &#36;name &#125;&#125;
&#123;!! !!&#125;文は、エスケープしません。

1
&#123;!! &#36;name !!&#125;



CSRF対策
csrf_field関数を使うと、CSRF対策用のトークン値を持つフィールドを生成してくれます。
<form method= POST action= &#123;&#123; url( login ) &#125;&#125; >
&#123;&#123; csrf_field() &#125;&#125;
</form>
「VerifyCsrfTokenミドルウェア」にて、「リクエストのトークン」と「セッションのトークン」が一致するかチェックしてくれます。


configヘルパー関数でconfigデータを取得できます。
&#36;value = config( app.timezone );
// デフォルト値指定
&#36;value = config( app.timezone &#36;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 ★スクリプト実行が選択されているときに必須とする
&#36;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]&#123;20&#125;&#36;/
];


・トレイリングスラッシュについて ★
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/