gpt4 book ai didi

objective-c - 使用 Kiwi 测试 Objective-C 时,如何显式删除 stub ?

转载 作者:行者123 更新时间:2023-11-28 21:30:48 30 4
gpt4 key购买 nike

我正在尝试测试一个我也 stub 的值:

context(@"when pressing the audio alert button", ^{

context(@"when audio is currently disabled", ^{

beforeEach(^{
[subject.defaults stub:@selector(boolForKey:) andReturn:theValue(NO) withArguments:SHOULD_AUDIO_ALERT_KEY];
});

it(@"should enable audio alerts", ^{
[subject.audioAlertButton sendActionsForControlEvents:UIControlEventTouchDown];

//I would like to kill/remove the stub at this moment.

BOOL shouldAudioAlert = [subject.defaults boolForKey:SHOULD_AUDIO_ALERT_KEY];
[[theValue(shouldAudioAlert) should] equal:theValue(YES)];
});
});
});

由于 stub ,此测试将始终失败,shouldAudioAlert 将始终为 NO。当我写这个问题时,我意识到我可以通过改进代码的设计来避免这种情况(这是一个追溯测试,而不是测试先行)。但我仍然想知道我是否能够明确地杀死/删除 stub 。

我无法从文档或搜索中找到答案。感谢您的帮助!

最佳答案

据我所知,Kiwi 不提供任何类型的 -unstub API 调用,因此,我不知道有什么方法可以做到这一点。但是玩跳房子游戏并简单地对某些内容进行 stub 然后取消 stub 将导致难以阅读和维护的测试。相反,我建议使用单独的 context block ,一个启用音频,一个禁用音频。后一个 context block 将 stub 方法。

另一种选择是根据提交给方法的参数以更细粒度的方式 stub 。正如您可以想象的那样,就时间而言, stub 与 stub 是完全不同的维度,正如您在示例中所做的那样。

关于objective-c - 使用 Kiwi 测试 Objective-C 时,如何显式删除 stub ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23154463/

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