0

単体テスト内に次のようなコードがあります。

// $item_id was defined above
$originalMock = $this->getMock( 'Item', array( 'foo' ), array(
  $item_id
));

$originalMock->expects( $this->once() )->method( 'foo' );

$originalMock->functionThatCallsFoo();

&が内部からvar_dumpingしているfooにもかかわらず、私はまったく呼び出していないと言っています。functionThatCallsFoofoo

公に呼び出された関数と私が期待している関数の間には、いくつかの関数呼び出しがあります。チェーンの下流に呼び出される静的関数がないことを確認しました。(元々ありましたが、これを完全に機能させることができるかどうかを確認するために変更しました)

編集expects直接呼び出されたメソッドに一致するように呼び出し を変更しましfunctionThatCallsFooたが、それでも機能しませんでした。

4

1 に答える 1

1

私のコードには多くの問題があったので、この質問に答えます。うまくいけば、この回答は、他の誰かが将来同様の問題を抱えている場合のチェックリストになります。

  1. 私の最後のメソッドは静的だったので、expects の代わりに staticExpects を使用する必要がありました
  2. 私の静的呼び出しは self:: を使用していましたが、 static:: を使用する必要がありました ( PHP >= 5.3 )
  3. static:: は、self:: とは異なり、プライベート関数では使用できません。

最後に、静的関数が悪である理由がわかりました。

于 2012-05-10T15:49:09.023 に答える