ViewController 内のいくつかのコードをテストし (特定の UISwitches の状態に応じて特定のコントロールがアクティブになるなど)、他の低レベルのロジック テストに使用しているため、Kiwi を使用することにしました。
私の期待は、次のようなテストを実行することです。
__block AViewController *aVC;
it(@"(tokenTextField) should be hidden if the token switch is set to off", ^{
lvC.useTokenSwitch.on = false;
[[theValue(aVC.tokenTextField.hidden) should] equal:theValue(YES)];
});
私の問題は、AViewController の初期化にあります。私がした場合:
aVC = [[AViewController alloc] initWithNibName:@"aViewController" bundle:nil];
コントロールを初期化せずに「AViewController」を取得するため、それぞれを手動で初期化する必要があります。
だから私はこれを行う AViewController を取得しようとしました:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
aVC = [storyboard instantiateViewControllerWithIdentifier:@"AViewController"];
それでも、これによりエラーメッセージが表示されます。
NSInvalidArgumentException "バンドル NSBundle に 'MainStoryboard' という名前のストーリーボードが見つかりませんでした </Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk/Developer/usr/bin> )」を上げた
MainStoryboard をテスト ターゲットに含め、[ビルド フェーズ] -> [バンドル リソースのコピー] にも含めましたが、まだ何も含まれていません。
Kiwi Testing Target の Storyboard から ViewController をインスタンス化することさえ可能かどうか疑問に思っていますか? (どこにも例を見たことがないので)。
私のアプローチは間違っていますか? ViewController をモックする必要がありますか?
テスト対象に含まれるものが不足していますか?