1

同じ単体テスト セットで OCMock と Nocilla の両方を使用しようとしています。CocoaPods を使用して両方をインストールし、

#import <OCMock/OCMock.h>
#import <Nocilla/Nocilla.h>

しかし、次の方法で Nocilla の .andReturn を使用しようとすると (subscriptionData は NSData *):

stubRequest(@"GET", @"https://api.test.com/api/beaconinbox/subscriptions/list").andReturn(200).withBody(subscriptionData);

次のようなコンパイラ エラーが発生します。

/Users/ravi/GitHub/Mobile/ClinicalInbox/ClinicalInboxTests/ClinicalInboxTests.m:63:93: プロパティ '_andReturn' がタイプ 'LSStubRequestDSL *' のオブジェクトに見つかりません

これは、コードから を削除するまで持続し#import "<OCMock/OCMock.h>"ます。その後、すべてのテストが完全に実行されます。

OCMock および Nocilla との既知の非互換性はありますか? どこにも見つけられなかったようです - 実際、私は正反対のものを見てきました - 同じテストフレームワークで常に両方を使用している人々の多くの例。だから私は何か間違ったことをしていると仮定しなければなりません.誰か教えてもらえますか?

4

2 に答える 2

5

OCMock は、andReturn1 つの引数を持つ という名前のマクロを定義します。NocillaandReturnが 1 つの引数を持つものも使用する場合、それは非互換性です。前述のように、OCMockandReturnからマクロを未定義にすることで回避できます。これは明らかに、後で OCMock の構文のその部分を使用できないことを意味します。

于 2014-10-29T15:14:38.073 に答える
0

標準の角括弧表記を使用して両方を使用できます。

[stubRequest(@"GET", myURL) andReturn](200).withBody(body);

醜いですが、うまくいきます。

于 2015-12-12T19:32:06.853 に答える