私は、ある種のモック SecureSocial アクション ジェネレーター、または SecureSocial 自体を発明して、コントローラー メソッドを単体テストできるようにしようとしています。Securesocialアノテーションで保護された単体テスト方法や、依存性注入を使用してSecureSocialでPlay2アプリケーションをテストするなど、いくつかのアプローチを見つけましたが、実際には、その質問の作者は単体テストを行うのではなく、統合テストを行います.
私の単体テストは次のようになります。
trait MockDaoProvider extends IDaoProvider {
def entityDao = entityDaoMock
}
val controller = new MyController with MockDaoProvider
"MyController.list" should {
"return an OK" in {
entityDaoMock.list().returns(List())
val result = controller.list()(FakeRequest())
status(result) must equalTo(OK)
}
}
ご覧のとおり、依存関係をモックして、コントローラー メソッドが実際に行う動作を分離してテストしました。
MyController.list メソッドに securesocial の SecuredAction を使用するまでは、すべて問題ありませんでした。今度は例外が発生し、テストは失敗します。securesocial から SecuredAction および UserAwareAction オブジェクトをモック、スタブ、またはオーバーライドする方法がわかりません。それでも、テストを route(...) テストに変換したくありません。これらは、コントローラーの動作のみをテストすることを目的としています。
誰かが同じ問題に遭遇しましたか? どのように解決できるかのヒントがあるかもしれませんか?
PS: Play フレームワーク 2.2.1、securesocial - 2.1.2