還暦過ぎたエンジニアの挑戦

還暦過ぎても好奇心だけは忘れない エンジニア ひかるです

MENU

publicではないメソッドをテストする

f:id:hikaru217:20200515140036p:plain
privateやprotectedのメソッドだってテストコードを書いておきたいときはある。
でも、あまり頻繁には使わない。
いつもどうだっけ? ってなる

$reflectionMethod = new \ReflectionMethod(クラスのインスタンス, テストするメソッド名);
$reflectionMethod->setAccessible(true);
$result = $reflectionMethod->invoke(クラスのインスタンス[, テストするメソッドの引数]);

結局

  1. reflectionMethodのインスタンスを作って
  2. アクセス可能にして、
  3. invokeする3ステップで