gpt4 book ai didi

ios - 延迟的 OCMock 验证/处理单元测试中的超时

转载 作者:可可西里 更新时间:2023-11-01 03:50:11 27 4
gpt4 key购买 nike

我正在使用 OCMock 测试真实的网络服务调用。

现在我正在做一些事情,比如:

- (void)testWebservice
{
id mydelegatemock = [OCMockObject mockForProtocol:@protocol(MySUTDelegate)];
[[mydelegatemock expect] someMethod:[OCMArg any]];

[SUT sutWithDelegate:mydelegatemock];

// we need to wait for real result
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:2.0]];

[(OCMockObject*)mydelegatemock verify];
}

它工作正常,但它意味着每次这样的测试都需要 2 秒。

有什么方法可以设置超时时间吗? 2秒,让调用mydelegatemocksomeMethod立即验证并完成测试用例?

最佳答案

我使用我发现的一个方便的实用函数来执行此操作 at this link :

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

@interface TestUtils : NSObject
+ (void)waitForVerifiedMock:(OCMockObject *)mock delay:(NSTimeInterval)delay;
@end

和实现:

#import "TestUtils.h"
@implementation TestUtils

+ (void)waitForVerifiedMock:(OCMockObject *)inMock delay:(NSTimeInterval)inDelay
{
NSTimeInterval i = 0;
while (i < inDelay)
{
@try
{
[inMock verify];
return;
}
@catch (NSException *e) {}
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.5]];
i+=0.5;
}
[inMock verify];
}

@end

这允许我等待最大延迟(以秒为单位),而不必每次都等待全部时间。

关于ios - 延迟的 OCMock 验证/处理单元测试中的超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7310480/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com