0
サービスが.Containerスコープで既に解決されているかどうかをテストする方法を探しています。私のアプリケーションは、起動時にいくつかの「サービス」を起動し、それらのサービスが解決されるようにすることなくそれらのサービスが解決されていることを確認したかったのです。Swinjectテストの解決済みサービス
サービスが.Containerスコープで既に解決されているかどうかをテストする方法を探しています。私のアプリケーションは、起動時にいくつかの「サービス」を起動し、それらのサービスが解決されるようにすることなくそれらのサービスが解決されていることを確認したかったのです。Swinjectテストの解決済みサービス
ファクトリクロージャにログを追加して、タイプが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)
これ以上機能的なテストや単体テストでプログラム的に行うことを検討しています。私はサービスがinit'dされているかどうかテストしたいと思います。 – MPiccinato
ユニットテストにフラグを使用する例を追加しました。 –
フラグの使い方があなたの望むものではないかもしれません...私はちょうどあなたの要件に気付きました。 –