OCUnit と OCMock を使ったちょっとしたクラッシュ コースの後、質問をしなければなりません。多分それは簡単なことですが、私はそれを理解することができません。
この小さな小さな方法では:
- (void)setLoginButtonTitleForState:(BOOL)isLoggedIn {
if (isLoggedIn) {
[_loginButton setTitle:@"Logout" forState:UIControlStateNormal];
}
else {
[_loginButton setTitle:@"Login" forState:UIControlStateNormal];
}
}
タイトル ラベルが正しく入力されているかどうかをテストしたい。そのような場合のテストの書き方を学んでいるので、テストを書く前にメソッドを書きました。しかし、とにかくテストを実装する必要があります。
以前にこれを行ったことがある人がいる場合は、私を助けてください。これは私がこれまでに行ったことです:
- (void)test_checkLoginAndSetLoginButtonAndTitle_loggedIn {
MyViewController *myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
id mock_vc = [OCMockObject partialMockForObject:myViewController];
UIButton *loginButton = [[UIButton alloc] init];
id mock_button = [OCMockObject partialMockForObject:loginButton];
[mock_vc setLoginButton:mock_button];
[[mock_vc expect] setLoginButtonTitleForState:YES];
[[mock_button expect] setTitle:@"Logout" forState:UIControlStateNormal];
[mock_vc verify];
}
質問は次のとおりです。ここで何が間違っていますか?
ところで:テストを実行すると、次のエラーが発生します:
/Unknown.m: OCPartialMockObject[MyViewController]: expected method was not invoked: setLoginButtonTitleForState:YES
メソッドはパブリックでアクセス可能であるため、メソッドを呼び出さない理由がわかりません。
誰かが私にヒントを持っているなら、私に知らせてください!