1
我是使用OCMock的新手。我有以下簡化的代碼我想測試 -帶中間變量的OCMock測試代碼
@implementation ViewController
- (void)presentSomething:(NSString *)string {
NSLog(@"doSomethingElseWithString - %@", string);
}
- (BOOL)handleResult:(NSString *)result
{
BOOL handled = YES;
NSString *changedString = [result uppercaseString];
[self presentSomething:changedString];
return handled;
}
@end
和我有一個測試如下
- (void)testExample {
ViewController *vc = [ViewController new];
id mockViewController = OCMPartialMock(vc);
OCMStub([mockViewController presentSomething:@"1234"]);
BOOL handled = [vc handleResult:@"1234"];
XCTAssertTrue(handled);
OCMVerify([mockViewController presentSomething:@"1234"]);
}
我想驗證presentSomething被稱爲用正確的說法後,我打電話handleResult。
測試要麼給出在驗證失敗或稱未調用presentSomething方法的EXC_BAD_ACCESS。
如果更改handleResult方法如下測試運行和通過。
- (BOOL)handleResult:(NSString *)result
{
BOOL handled = YES;
[self presentSomething:result];
return handled;
}
看來,中間[結果uppercaseString]和變量引起的問題。這是我如何使用OCMock或OCMock中的錯誤的問題?