2011-10-21 6 views
2

私はリモートリソースを反映するローカルオブジェクトを作成するためにObjective Resourceを使用するアプリケーションを持っています。iOS Kiwiを使用したプロパティでモックサブクラスをテストする

特定のモデルクラスには、さまざまな追加機能を提供するための抽象クラスのサブクラスがあります。最も重要なのは、特定のプロパティの内容に関係なく、シリアル化、ディスクへの書き込み、およびディスクからのロードです。その特定のモデルオブジェクト。

superclass.m 

-(BOOL)saveToDisk{ 
    ...serializes and encodes all properties to disk 
    ...return success 
} 


subclass.h : superclass 

@property (nonatomic, retain) NSString* name; 
@property (nonatomic, retain) NSArray* friends; 
...etc 

それから私は、私は、一般的にBDD、テスト駆動開発に新しいです

 instanceOfSubclass.name = "joe" 
    NSLog(@"save status = %d",[instanceOfSubclass saveToDisk]); 

を呼び出します。このフレームワークを多くのプロジェクトで使用しているので、この機能を抽象的にテストするために、kiwiを使用してモックオブジェクトを作成するにはどうすればよいですか。

具体的には、さまざまなタイプのプロパティを持つサブクラスをロード、削除、および上書きできるようにするテストを構築したいと考えています。

これはスタブとモックが入る場所ですが、私はプロパティをモックする方法を理解できないようです。これらのプロパティを持つ実際のクラスを作成する必要がありますか?

答えて

0

this locationにいくつかのドキュメントがあります。基本的に、キウイは、#import "Kiwi.h"にアクセスしたNSObjectにObjective-Cカテゴリを提供しています。これにより、NSObjectから継承したすべてのオブジェクトは+mock,mockWithName:などに応答し、KWMockクラスで設定できます。

この情報がお役に立てば幸いです、と申し訳ありませんその少し遅れ:)

+0

ドキュメントリンクが壊れている場合は、github:https://github.com/kiwi-bdd/Kiwi/wiki/Mocks-and-Stubs – manroe

1

プロパティはそう、舞台裏メソッドです:私は@aopsfanで述べたように+mock方法の組み合わせでこれを行うために管理

-stub:andReturn:を使用して、プロパティを実装したメソッドの名前を推測しました。この例では、(Twilio iOS SDKから)TCConnectionを偽装、働い:

// Instantiates a mocked object: 
id fake_connection = [TCConnection mock]; 
// Creates a faked property accessor: 
[fake_connection stub:@selector(parameters) 
      andReturn:@{@"From": @"fake-caller"}]; 

// I could now call my TCDeviceDelegate 's 
// -device:didReceiveIncomingConnection: 
[myActualObject device:myActualObject.device 
      didReceiveIncomingConnection:fake_connection]; 
// Check some results on the object: 
[[myActualObject.connection should] equal:fake_connection]; 

このパターンの特定の例では、おそらく他の状況に一般化することができます。 -stubandReturn:なし)パラメータを呼び出すと、シミュレートされたフィクスチャで呼び出すことができないメソッドをサイレントにすると便利です。

関連する問題