CakePHP3のHelperクラスで、クエリパラメータを参照するメソッドのテストを書いてみたよ

Bake-with-CakePHP Logo

Helperクラスのメソッド内で$this->request->$methodName()等を使い、URLのクエリパラメータを拾うような実装に対してテストコードを書く方法。検証したCakePHPのバージョンは3.6.13。

 

例として、$this->request->getQuery()を使ったメソッドを準備:

このクラスに対するテストコードは下記のように書ける:

解説

大きなポイントが2つある。

TemplateファイルやHelperクラスのメソッド内で呼び出すことができる$this->requestオブジェクトの正体は、 ServerRequestクラスのインスタンスである。そしてViewクラスをnewでインスタンス化する際、ServerRequestインスタンスを渡すことができるようになっている。

このServerRequestインスタンスは生成時にURL情報を引き渡すことが可能で、 これによりHelperクラス内のメソッドにて$this->requestからURL情報を取得できるようになる。詳細はCakePHP3のスケルトンにあるViewクラスの__construct()を参照していただきたい。