クラス内に2つのメソッドがあり、そのうちの1つが特定のパラメータを持つ別のメソッドを単に呼び出すメソッドがあります。方法は次のとおりです。OCMock:OCMPartialMockオブジェクトは、スタブではなく実際のメソッドを呼び出します。
-(void)loadAllFollowersForUser:(NSUInteger)userID withResponseHandler:(_Nullable CompletionHandler)handler {
[self loadFollowersForUser:userID
fromOffSet:0
toLimit:100000
withResponseHandler:handler];
}
-(void)loadFollowersForUser:(NSUInteger)userID fromOffSet:(NSInteger)offset toLimit:(NSInteger)limit withResponseHandler:(_Nullable CompletionHandler)handler {
NSLog(@"Actual loadFollowersForUser method got called!");
}
私はTDDで手を入れていますが、OCMockを使用しています。私は単にloadAllFollowersが内部で私が唯一loadFollowersForUserメソッドをスタブとloadAllFollowersメソッドの実際の実装を呼び出したいので、私は部分的モックを使用しています他の方法に
- (void)testLoadAllFollowersCallsLoadFollowers {
id partialMockSUT = OCMPartialMock(self.sut);
OCMExpect([partialMockSUT loadFollowersForUser:[OCMArg any]
fromOffSet:[OCMArg any]
toLimit:[OCMArg any]
withResponseHandler:[OCMArg any]]);
[partialMockSUT loadAllFollowersForUser:123
withResponseHandler:^(BOOL success, id response, NSError *error) {
}];
OCMVerifyAll(partialMockParser);
}
を呼び出していることをテストする次のテストを持っています。これはほぼ正確ですが、私のテストはいつも期待通りには失敗し、NSLogがコンソールに表示されます。私が試してみました
もの:
- を
- This質問は私がやろうとしています何を示唆している私はparitalモックの動作を確認するために、他の一時的なメソッドを追加しようとしていると、彼らが期待どおりに実行するには、非常にする必要があります多くの可能性があります
- 私は、OCMockドキュメントを使用してOCMExpectインラインの後にメソッドのOCMStubを追加しようとしました。 this page
ブロックの問題が渡されたか、またはメソッドの戻り値の型が無効で、予期しない動作がないかどうかわかりません。
http://ocmock.org/reference/#argument-constraintsのOCMockドキュメントを見てみると、「オブジェクトでもポインタもセレクタでもない引数は、任意のプレースホルダを使用して無視することはできません」と回避策があります。そこにスカラー引数があるので、それは問題かもしれません。 – marramgrass
ありがとう!それは働いているようだ。それがスローされる例外は、あらゆる制約とスカラー値についての警告/エラーを投げるのではなく、期待に合致しないことです。これは、私は数時間の間、困惑してしまった。あなたはこれを回答として掲示してください。もう少しテストしてもそれを受け入れますか? –