【发布时间】:2014-08-03 11:02:33
【问题描述】:
我有一个我想测试的方法:
- (void)openEmailFeedback
{
MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init];
controller.mailComposeDelegate = self;
[controller setToRecipients:@"test@example.com"];
[controller setSubject:@""];
[controller setMessageBody:@"" isHTML:NO];
[self presentViewController:controller animated:YES completion:nil];
}
我尝试用它测试它
- (void)testOpenEmailFeedback
{
ViewController *vc = [[ViewController alloc] init];
// Create a partial mock of UIApplication
id mockMailComposeViewController = [OCMockObject mockForClass:[MFMailComposeViewController class]];
[[mockMailComposeViewController expect] setMailComposeDelegate:vc];
[[mockMailComposeViewController expect] setToRecipients:@[@"test@example.com"]];
[[mockMailComposeViewController expect] setSubject:@""];
[[mockMailComposeViewController expect] setMessageBody:@"" isHTML:NO];
[vc openEmailFeedback];
[mockMailComposeViewController verify];
[mockMailComposeViewController stopMocking];
}
但我意识到 mockMailComposeViewController 与方法中的本地 MFMailComposeViewController *controller 远非同一个变量。测试时是否可以在“openEmailFeedback”方法中访问局部变量?
【问题讨论】:
标签: ios objective-c ocmock xctest