我試圖測試實例的MFMailComposeViewController
實例的方法調用。正在測試的方法調用了幾種方法,包括setSubject:
。OCMock與方法類的從測試方法
我想測試SETSUBJECT發送一個特定的NSString,在這種情況下@「測試信息」。
無論我爲模擬存根中預期的字符串指定什麼都沒有失敗。
在單元測試類:
#import <OCMock/OCMock.h>
- (void)testEmail {
TestClass *testInstance = [[TestClass alloc] init];
id mock = [OCMockObject mockForClass:[MFMailComposeViewController class]];
[[mock stub] setSubject:@"Test Message"];
[testInstance testMethod];
}
在識別TestClass:
- (void)testMethod {
MFMailComposeViewController *mailComposeVC = [[MFMailComposeViewController alloc] init];
[mailComposeVC setSubject:@"Bad Message"];
}
Test Suite 'Email_Tests' started at 2011-09-17 18:12:21 +0000
Test Case '-[Email_Tests testEmail]' started.
Test Case '-[Email_Tests testEmail]' passed (0.041 seconds).
測試應該失敗。
我在iOS模擬器中測試這個,並在設備上得到相同的結果。
我在做什麼錯?有什麼辦法可以做到這一點?
感謝您的方法,並回答!我正在學習如何爲單元測試編寫單元測試和代碼。在這種情況下,我將單元測試添加到遺留代碼,所以我希望在對它進行修改之前不要進行任何修改或進行最低限度的修改。有一點,我嘗試傳遞一個'MFMailComposeViewController'的模擬,它爲通過測試工作,但導致崩潰的測試失敗,這是通常的OCMock?此外,爲了清晰起見,我故意忽略內存管理,儘管我傾向於在可能的情況下使用ARC編寫代碼。 – zaph
OCMock通過引發異常來報告失敗。 SenTestingKit旨在捕獲和報告異常,但不幸的是,由於Simulator中的錯誤,它會崩潰。我正在研究一種避免這種情況的替代模擬框架,但它還沒有準備好。 –