2014-01-30 75 views
1

我想測試一個GET請求的方法。如何使用OCMock或OCMockito驗證對NSURLProtocol模擬的方法調用?

這裏是一個人爲的例子:

- (void)GET:(NSString *)URLString; 

而不是這個方法的實現細節(例如嘲諷,設定期望,然後驗證的依賴),我寧願只能夠測試憂如果發出GET請求。

我相信我可以用NSURLProtocol做到這一點,但我迄今爲止的嘗試都沒有成功。

例如,使用OCMock:

id mockURLProtocol = (NSURLProtocol *)[OCMockObject mockForClass:[NSURLProtocol class]]; 
[NSURLProtocol registerClass:mockURLProtocol]; 

[[mockURLProtocol expect] canInitWithRequest:[OCMArg any]]; 

[MYClass GET:@"test"]; 

[mockURLProtocol verify]; 
[mockURLProtocol stopMocking]; 
[NSURLProtocol unregisterClass:mockURLProtocol]; 

上述測試失敗,因爲canInitWithRequest不會被調用。

如何設置NSURLProtocol的期望值以驗證請求是否正在創建?

+0

爲了澄清,我意識到上述只是一個起點,我需要做更多的工作來驗證我所期望的請求實際上是否成立。 –

+0

你的類的GET方法的代碼是什麼? –

+0

它目前使用AFNetworking,但重點不在於真正關心方法內部發生了什麼。 –

回答

0

嘲笑NSURLProtocol對我沒有意義。 NSURLProtocol用於測試以創建對特定請求的預設響應,不需要嘲笑它(您不想測試系統與它的交互方式)。 This project使用NSURLProtocol,如果你想使用這種方法而不是純粹的單元測試,那麼你可能會很有用,因爲你可以直接測試你的NSURLConnectionDelegate實現。

相關問題