簡體   English   中英

是否可以在IOS的XCTest單元測試用例中模擬方法(帶有參數)調用

[英]Is it possible to mock a method(with parameters) call in XCTest unit test case in IOS

我在應用程序中使用外部附件的第三方框架。 在編寫單元測試用例時,我需要繞過對庫的所有直接調用。

//Actual Code i need to mock
    ExternalDevice *device = [extern.devices firstObject];
// Able to mock this using "mock([ExternalDevice class])"

    //myRequest is a request created using third party Library
    self.myRequest = [device accesoryRequestWithReference:@"123456789" error:&error];
// I need to get a mock object of this request that i can pass from my test case

我試過的模擬

方法1

 EXternalDeviceRequest * mockRequest = mock([EXternalDeviceRequest class]);
    id mockDevice = [OCMockObject mockForClass:[EXternalDevice class]];
    [[[mockDevice stub]andCall:@selector(accesoryRequestWithReference:error:) onObject:device]willReturn: mockRequest];

方法二

device = mock([EXternalDevice class]);
 EXternalDeviceRequest * mockRequest = mock([EXternalDeviceRequest class]);
[given([device accesoryRequestWithReference:@"" error:nil]) willReturn: mockRequest];

兩者都不起作用。 請幫忙。

提前致謝

嘗試使用OCMock的宏:

EXternalDeviceRequest * mockRequest = mock([EXternalDeviceRequest class]);
id mockDevice = [OCMockObject mockForClass:[EXternalDevice class]];
OCMStub([mockDevice accesoryRequestWithReference:[OCMArg any] error:[OCMArg setTo:nil]]).andReturn(mockRequest);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM