2016-03-24 20 views
0

サービスが.Containerスコープで既に解決されているかどうかをテストする方法を探しています。私のアプリケーションは、起動時にいくつかの「サービス」を起動し、それらのサービスが解決されるようにすることなくそれらのサービスが解決されていることを確認したかったのです。Swinjectテストの解決済みサービス

答えて

0

ファクトリクロージャにログを追加して、タイプがSwinjectコンテナによってすでに解決されているかどうかを確認できます。

container.register(AnimalType.self) { _ in   
    // You can log here. 
    print("AnimalType is being resolved to Cat.") 
    return Cat() 
} 
.inObjectScope(.Container) 

EDIT

またはあなたのユニットテストでチェックするためにフラグを使用することができます。

var initialized = false 

container.register(AnimalType.self) { _ in   
    // You can check this parameter later in your unit test. 
    initialized = true 
    return Cat() 
} 
.inObjectScope(.Container) 

XCTAssertFalse(initialized) 
container.resolve(AnimalType.self) 
XCTAssertTrue(initialized) 
+0

これ以上機能的なテストや単体テストでプログラム的に行うことを検討しています。私はサービスがinit'dされているかどうかテストしたいと思います。 – MPiccinato

+0

ユニットテストにフラグを使用する例を追加しました。 –

+0

フラグの使い方があなたの望むものではないかもしれません...私はちょうどあなたの要件に気付きました。 –