gpt4 book ai didi

ios - 如何使用 OCMockito 检查插入到 UserDefault 中的值

转载 作者:行者123 更新时间:2023-11-28 22:29:42 27 4
gpt4 key购买 nike

我开始使用 OCMockito 进行单元测试。现在我正在使用它来模拟 UserDefaults(通过依赖注入(inject))。

我可以通过以下方式控制返回的内容: [given([mockUserDefaults objectForKey:@"some key"]) willReturn:@"a value I want"];

现在我的问题是:如何检查用户为模拟 UserDefaults 设置的值?

例如,如果用户发出: [self.userDefaults setObject:[NSDate date] forKey:"example"];

如何从模拟 userDefaults 中获取 date

最佳答案

OCMockito 还没有办法捕获和返回参数。相反,每个参数都必须满足 OCHamcrest 匹配器。如果未指定匹配器,则假定为 equalTo

测试 [NSDate date] 在单元测试中通常不是一个好主意,因为您无法控制日期。但为了举例,这里验证参数是 any NSDate。 (sut 是“被测系统”。)

[verify(sut.userDefaults) setObject:instanceOf([NSDate class]) forKey:@"example"];

所以在这里,第一个匹配器是 instanceOf 来匹配任何 NSDate。

第二个匹配器隐式地 equalTo(@"example)

更新:

OCMockito 1.1.0 有一种捕获参数的方法,使用 MKTArgumentCaptor:

MKTArgumentCaptor *argument = [[MKTArgumentCaptor alloc] init];
[verify(sut.userDefaults) setObject:[argument capture] forKey:@"example"];

您可以使用 [argument value] 检索捕获的参数,或者使用 [argument allValues] 检索所有捕获的参数的数组。

关于ios - 如何使用 OCMockito 检查插入到 UserDefault 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17795673/

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