関数がisKindOfClassを呼び出すメソッドにOCMockオブジェクトを渡します。しかし、単体テストの場合、返される値は模擬クラスではなくOCMockObjectです。OCMockオブジェクトのisKindOfClassを呼び出すときに疑似値を取得する方法は?
答えて
関数がisKindOfClassを呼び出すメソッドにOCMockオブジェクトを渡す場合、部分模擬を作成する必要があります。次のコードはあなたを助けるかもしれません。それは私のために働いた。
-(void)testMyTest
{
FirstViewController* masterVC = [[FirstViewController alloc]init];
SecondViewController *second = [[SecondViewController alloc] init];
id master = [OCMockObject partialMockForObject:second];
[[master expect] getName:@"PARAM"];
[masterVC doSomething:master];
[master verify];
[masterVC release];
[second release];
}
FirstViewController
-(void)doSomething:(SecondViewController *)detail
{
if ([detail isKindOfClass:[SecondViewController class]])
{
NSString * returnVal = [detail getName:@"PARAM"];
NSLog(@"returnVal %@",returnVal);
}
}
内部doSomethingの方法もう一つの選択肢は、isKindOfClass方法をからかっているので、テストケースはここで
- (void)testMyTest
{
CalculatorViewController* masterVC = [[CalculatorViewController alloc]init];
id master = [OCMockObject niceMockForClass:[SecondViewController class]];
BOOL ret = YES;
[[[master expect] andReturnValue:OCMOCK_VALUE(ret)] isKindOfClass:[SecondViewController class]];
[[master expect] getName:@"PARAM"];
[masterVC doSomething:master];
[master verify];
}
mock/niceMockを使用する利点は、オブジェクトをインスタンス化する必要がないことです。私の場合、そのオブジェクトを作成するのは難しいです。 – Giuseppe
ok。 1つの方法は、isKindOfClassメソッドをモックすることです。次のようなものですid master = [OCMockObject niceMockForClass:[SecondViewController class]]; BOOL ret = YES; //値を変更することができます [[[期待値]と[戻り値]:OCMOCK_VALUE(ret)] isKindOfClass:[SecondViewControllerクラス]]; –
私がやっているのは、niceMockを使って、メソッド "class"をスタブして、模擬クラスを返すことです。 kindOfClassに対してYESを返すだけで、信頼性が向上します。なぜこれがOCMockのデフォルトの動作ではないかは私にとっては不明です。 – Giuseppe
を作成する方法を正確に説明する記事全体でなり、 OCMock isKindOfClass
メソッド(既定では存在しません)とその使用方法:http://blog.carbonfive.com/2009/02/17/custom-constraints-for-ocmock/
- 1. オブジェクト内のオブジェクトの値を呼び出す方法は?
- 2. NSURLSessionDataTaskと呼び出しブロックから戻り値を取得する方法は?
- 3. IFrameからAJAXを呼び出すときにxmlHttp.responseTextを取得する方法
- 4. インテントの呼び出しアクティビティのオブジェクトを取得する方法は?
- 5. イベントハンドラを動的に呼び出す方法とjavascriptでその戻り値を取得する方法は?
- 6. シェル呼び出しのステータスコードを取得する方法は?
- 7. WPF:ICommandに似たメソッドを呼び出す方法は?
- 8. C#でjavascriptを呼び出して戻り値を取得する方法は?
- 9. 別のメソッドを呼び出すメソッドを取得する方法
- 10. ajax呼び出しから戻り値を取得する方法は?
- 11. Androidパーステーブルから呼び出して値を取得する方法は?
- 12. 呼び出すバットスクリプトの名前を取得する方法
- 13. 関数を呼び出すときにテンプレート値を使用する方法は?
- 14. Redux - 提出ハンドラでフォーム値を取得し、event.preventDefault()を呼び出す方法
- 15. linq呼び出しに格納された値を取得する方法式
- 16. findChessboardCornersを呼び出すときにコーナーの座標を取得
- 17. pjaxを呼び出すときに$(document).ready()で呼び出されたjqueryを呼び出す方法は?
- 18. スナップショットメソッドが呼び出されたときにnull値を取得する
- 19. 設定方法:疑似要素/クラスを無効にする:before疑似要素
- 20. COM +コンポーネントを呼び出すとき0x80131902を取得する
- 21. OCMockでスタブ付きの値を持つオブジェクトを初期化する方法
- 22. イベントの呼び出しリストを取得する方法
- 23. JFace:アクションの呼び出し元を取得する方法#run()?
- 24. データから値を取得する方法:AJAX呼び出しの一部
- 25. PHPはメソッドの呼び出しオブジェクトを取得します
- 26. メソッドが呼び出されるオブジェクトの型を取得する
- 27. Mockitoを使用して呼び出されなかった疑似メソッドを確認する方法
- 28. ファイルを開くときと呼び出したときに元の画像サイズを取得する方法imageareaselect
- 29. コンストラクタの呼び出し方法とオブジェクトの呼び出し方法
- 30. Arduinoで呼び出されたときにシステム関数の出力を取得する方法は?
OCMockObjectは、そのフレームワークの基本クラスのようです。あなたは+(id)を呼び出していますか?mockForClass:クラスと、作成されたオブジェクトが擬似クラスとして自分自身を報告していない理由が不思議ですか? – JiuJitsuCoder
この問題が解決しない場合は、ユースケースを提示できますか?あなたは何をしようとしているのですか?いくつかのコードは分析を助けるでしょう。 –
パラメータのクラスに応じてオブジェクトを作成するすべてのファクトリクラスに役立ちます。私の場合は、これらの工場をテストするために模擬の代わりに実際のオブジェクトを作成する必要があります。 – Giuseppe