サンプル プロジェクトを使用して Typhoon フレームワークをセットアップしようとしていますが、シミュレーターを実行すると問題なく動作しますが、テストを実行しようとするとエラーが発生します。エラーは次のとおりです。
NSInvalidArgumentException'、理由: 'クラス 'DI_Example.MyAssembly' は TyphoonAssembly のサブクラスではありません'
さて、こことここで、これは CocoaPods が原因で Typhoon パッケージが 2 回リンクされていることが原因であると読みました。これは私のPodfileであり、2回リンクする必要はないようです
platform :ios, '8.0'
target 'DI_Example', :exclusive => true do
pod 'Typhoon', '~> 2.3' end
target 'DI_ExampleTests', :exclusive => true do end
inhibit_all_warnings!
また、テスト ターゲットをアプリケーション スタイルからロジック スタイルに変更すると、すべて正常に動作するように見えます (パッケージが 2 回インポートされていないためと想定しています)。誰かが私がしていることに問題を見つけることができますか?
テストにヒットする前にエラーがスローされたように見えるので、2つのターゲットをリンクすることに関係していると推測しています
これが私のテストです(ホストアプリケーションをなしに設定すると合格です)
var controller: HomeViewController!
override func setUp() {
super.setUp()
let ctrlAssembly = ControllersAssembly()
let blAssembly = BusinessLogicAssembly()
ctrlAssembly.blAssembly = blAssembly
let factory = TyphoonBlockComponentFactory(assemblies: [blAssembly, ctrlAssembly])
let configurer = TyphoonConfigPostProcessor()
configurer.useResourceWithName("Info.plist")
factory.attachPostProcessor(configurer)
controller = factory.componentForKey("homeViewController") as HomeViewController
}
func testControllerTitle() {
// Arrange
// Act
controller.viewDidLoad()
// Assert
println(controller.title)
XCTAssertTrue(controller.title == "Root View", "Title is set")
}