LaravelでMockeryを使う際の注意点


めちゃくちゃ便利なMockery。テストを書く方なら多分結構使ったことがあるかなと思います。
今回はMockeryを使う際の注意点を紹介します。

Mockeryはprotectedなメソッドには使えない

意外な落とし穴としてはこれが上げられるかなと思います。

Mockeryprotectedなメソッドには使えないのです。
ただ、どうしてもprotectedでメソッド宣言したい、でもテストするときに必要だしな ~ みたいなパターンあると思います。

めちゃくちゃ親切なことにそれ専用のメソッドが用意されています。

shouldAllowMockingProtectedMethodsを使おう

protected専用のメソッドです。
こいつを使ってあげれば一発で解消します。(公式)

$service = \Mockery::mock('Class')->shouldAllowMockingProtectedMethods();

上記の様に呼び出してあげればokです