use*_*706 5 iphone ios ios7 xctest
我有方法,我想测试:
- (void)sendMailToContact:(Contact *)conact
{
self.contact = conact;
if ([self isSendingAvaiable]) {
MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init];
mailViewController.mailComposeDelegate = self;
[mailViewController setToRecipients:@[self.contact.email]];
[self.parentViewController presentViewController:mailViewController animated:YES completion:nil];
}
}
Run Code Online (Sandbox Code Playgroud)
考试...
- (void)testSendMailToContact_itShouldShowMFMailComposeViewController
{
UIViewController *mockViewController = [[UIViewController alloc] init];
[mockViewController viewDidLoad];
MailComposer *mockMailComposer = [MailComposer sharedComposerWithController:mockViewController];
[mockMailComposer sendMailToContact:[self mockContact]];
XCTAssertTrue([mockViewController.presentedViewController isKindOfClass:[MFMailComposeViewController class]], @"");
}
Run Code Online (Sandbox Code Playgroud)
但它无法正常工作.我应该将MFMailComposeViewController作为presentViewController,但我有null.我不知道该怎么办.请帮忙!
问题是mockViewController不在UIWindow层次结构中.尝试:
[UIApplication sharedApplication].keyWindow.rootViewController = mockViewController;
Run Code Online (Sandbox Code Playgroud)
然后你也可以摆脱viewDidLoad电话.
在测试之前将根 ViewController 实例添加到 UIWindow 中,无需UIApplication.shared.keyWindow?.rootViewController如上所述使用。
let window = UIWindow()
window.rootViewController = yourRootViewController
window.makeKeyAndVisible()
XCTAssert(yourRootViewController.presentedViewController is YourModalViewController)
Run Code Online (Sandbox Code Playgroud)
您的测试用例包含一些问题。您正在呈现MFMailComposeViewController来自MailComposer. 所以你应该调用presentedViewControlleronmockMailComposer而不是 on mockViewController。
将其更改为:
- (void)testSendMailToContact_itShouldShowMFMailComposeViewController
{
MailComposer *mockMailComposer = [MailComposer sharedComposerWithController:mockViewController];
[mockMailComposer sendMailToContact:[self mockContact]];
XCTAssertTrue([mockMailComposer.presentedViewController isKindOfClass:[MFMailComposeViewController class]], @"");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2106 次 |
| 最近记录: |