それはあなたが何をテストしようとしているのかによります。バインディングが正しく設定されていることを確認したい場合は、Cocoaインターフェースの単体テストに関するChrisHansonの記事を読んでください。個人的には、これはやり過ぎであり、あまり役に立たないテストコードの急増につながると思います。しかし、それは私の2セントです。
テストでこれらのインターフェイス要素を実際に操作しようとすると、特にUIActionSheetsとUITableViewsで、最終的に多くのotestエラーが発生します。
ただし、目標は、AppleのUIオブジェクトの動作ではなく、コントローラーの動作を単体テストすることです。私が最もよく機能するのは、OCMockを使用してUI要素をモックし、コントローラーがそれらに対して予期された呼び出しを行うことを確認することです。次にいくつかの例を示します。
-(void)testClickingAButtonHidesAView {
//setup
id mockViewToHide = [OCMockObject mockForClass:[UIView class]];
[[mockViewToHide expect] setHidden:YES];
[controller setSomeView:mockViewToHide];
// hideButtonClicked is an IBAction that is the hide button's target
[controller hideButtonClicked];
[mockViewToHide verify];
}
-(void)testActionSheetPublishClick {
// ModelManager is the controller's dependency, which publishes Items
id mockModelManager = [OCMockObject mockForClass:[ModelManager class]];
[controller setModelManager:mockModelManager];
// this doesn't really need to be mocked, but it's a convenient way to create
// a reference you can validate in expect:
id mockItem = [OCMockObject mockForClass:[Item class]];
[controller setCurrentItem:mockItem];
// when the user clicks "Publish" (the first button on the action sheet),
// the controller should publish the current item
[[mockModelManager expect] publishItem:mockItem];
// stub object so I know which action sheet was clicked
id mockPublishActionSheet = [OCMockObject mockForClass:[UIActionSheet class]];
[controller setPublishConfirmation:mockPublishActionSheet];
// simulate action sheet click
[controller actionSheet:mockPublishActionSheet didDismissWithButtonIndex:0];
[mockModelManager verify];
}