2ブロックのメソッドを持つクラス(AFHTTPSessionManager
)を模擬しようとしていますが、どのように手動でトリガできますか?2つのテストでは最初のブロック実装を使用しますもう1つのテストは2番目のブロック実装を使用します。2ブロック完了のOCMockスタブメソッド
[manager GET:path parameters:parameters success:^(NSURLSessionDataTask *task, id responseObject) {
//First block to trigger.
//logic code here
} failure:^(NSURLSessionDataTask *task, NSError *error) {
//Second block to trigger.
//logic code here
}];
現在のところ、常に2番目のブロックがトリガーされます。
私はこのようなクラスを嘲笑しました:
NSError *error = [NSError errorWithDomain:NSLocalizedFailureReasonErrorKey code:-1009 userInfo:nil];
NSDictionary *responseObject = [NSDictionary dictionaryWithObjectsAndKeys:@"object", @"key", nil];
id mockAFHTTPSessionManager = OCMClassMock([AFHTTPSessionManager class]);
OCMStub([mockAFHTTPSessionManager alloc]).andReturn(mockAFHTTPSessionManager);
OCMStub([mockAFHTTPSessionManager initWithBaseURL:OCMOCK_ANY]).andReturn(mockAFHTTPSessionManager);
OCMStub([mockAFHTTPSessionManager GET:OCMOCK_ANY parameters:OCMOCK_ANY success:([OCMArg invokeBlockWithArgs:OCMOCK_ANY, responseObject, nil]) failure:([OCMArg invokeBlockWithArgs:OCMOCK_ANY, error, nil])]);