I use GHUnit
. I want to test IBOutlet
's properties such as isHidden
, delegate
, etc.
I tried below code to test if myView
is hidden :
- (void)testViewDidLoad
{
// Call view on viewcontroller which will load the view if not loaded
[testClass view];
// Tests
testClass.myView.hidden = YES;
if (testClass.myView.isHidden) {
GHTestLog(@"Hidden");
}
else {
GHTestLog(@"Not Hidden");
}
}
This always logs Not Hidden
, whereas just before logging I set it hidden = YES
.
Why is this?
To test delegate
property of an IBOutlet
I tried below line :
GHAssertNotNil(testClass.textField.delegate, @"delegate is nil.");
It fails with Reason : ((testClass.textField.delegate) != nil) should be FALSE.
What is wrong?
EDIT : Tried below code which does not work.
[testClass view];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard"
bundle:[NSBundle bundleForClass:[self class]]];
GHAssertNotNil(storyboard, nil);
// Tests
GHAssertTrue(testClass.myView.isHidden, nil); // This fails
When testing your views contained in a
UIStoryboard
, make sure that you've added your storyboard file to the test target.I'd also suggest that you have a test that validates that your storyboard was successfully initialized like this:
Edit
You first have to instantiate your view controller you'd like to test from your storyboard and then you can test your outlet:
I'd also recommend to test (in a separate method) that your view controller is successfully instantiated. I'd also move the controller initialization into your setUp method - if necessary.