私は、JSON APIベースのアプリケーションの複雑なテストを作成するのに助けが必要です。Symfony Testing - ClockMock/DateTime
ショート問題のシナリオ:(比較のため)
- テスト
- EntityManagerMockがは($ temporaryEntity)を持続するためにいくつかのパラメータで
- テストコール本当の方法を待つように設定されている一時的なエンティティを作成
- メソッドを作成して保存しようとしました模擬EM
- テストが失敗しますb ecause時間変化は、1秒
のために私たちは、ClockMockを使用しようとしましたが、それは唯一の名前空間のために/と呼ばれていたクラスの仕事です。私たちのメソッドは他の名前空間にあり、エンティティは次の名前空間に作成されます。
私たちは、PHPプラットフォーム\ DateTimeクラスを一時的にオーバーライドする方法を探しています。または、プロジェクト内のすべての名前空間/クラスに対してClockMockを使用する方法(ただし、テストのみ)。 SymfonyベースのClockMockを修正しようとしましたが、良い方法は見つかりませんでした: - /。
どうすればよいですか? (私はget_declared_class()のような使用の何かをしたいし、それclockMockと呼んではいけない::登録 - それはおよそ15.000のテストのために非常に遅いsoloutionだから - 。!/
おかげで、すべての
"私たちは、PHP platform \ DateTimeクラスを一時的に無効にする方法を探しています。"私はあなたがこれをする必要がある、あるいはこれをしたいと思う理由を追いかけていません。ユニットテストでは、そのモックがどのように役立つでしょうか? –
コードのrilevante部分を表示できますか? – Matteo
申し訳ありませんが、ビンを貼り付けるコードを置く必要があります:http://pastebin.com/ZhBMrq4P - 単純化されていますが、主な問題があります。問題は、永続的な呼び出しの期待です。なぜなら、「新しいDateTime」は時々、より長い時間を生成するからです(テストが1秒に実行されているとき)。 ClockMockにすべてのクラスを登録することで解決策がありますが、完全なプロジェクトには非常に時間がかかります。 – Filip