Skip to content

Instantly share code, notes, and snippets.

@laiso
Created April 11, 2013 08:14
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save laiso/5361649 to your computer and use it in GitHub Desktop.
Save laiso/5361649 to your computer and use it in GitHub Desktop.
テストコード
{
id addressbook = [OCMockObject mockForClass:[RHAddressBook class]];
id person = [OCMockObject mockForClass:[RHPerson class]];
[[person expect] setFirstName:@"テスト"];// 実行順序 3
[[person expect] setLastName:@"ユーザー"];// 実行順序 4
[[person expect] save];// 実行順序 6
RHMutableMultiValue* emails = [[RHMutableMultiValue alloc] initWithType:kABMultiStringPropertyType];
[emails addValue:@"test@example.com" withLabel:(__bridge NSString*)kABWorkLabel];
//厳密にチェックしない場合はOCMOCK_ANY渡してもよし
[[person expect] andCall:@selector(setEmails:) onObject:emails];// 実行順序 5
[[[addressbook expect] andReturn:person] newPersonInDefaultSource];// 実行順序 2
[self.device performSelector:@selector(setAddressbook:) withObject:addressbook];// テスト専用にインターフェース追加せず、プライベートメンバに差し込む作戦
/// ここまでモックをジェネレートするブロック
// メインのテストコード
BOOL ret = [self.device addPersonToAddressbook:@{@"email": @"test@example.com", @"firstName": @"テスト", @"lastName": @"ユーザー"}];// 実行順序 1
STAssertTrue(ret, nil);
/// ここからモックの検証をするブロック
[addressbook verify];
[person verify];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment