gpt4 book ai didi

objective-c - 如何使用kiwi测试函数调用的参数?

转载 作者:搜寻专家 更新时间:2023-10-30 20:25:19 26 4
gpt4 key购买 nike

我可以使用下面的代码来测试 cruiser 被调用了两次。但是如何测试第一次调用的参数是7,第二次调用的参数是8呢?

id cruiser = [Cruiser cruiser];
[[cruiser should] receive:@selector(energyLevelInWrapCore:) withCount:2];
[cruiser energyLevelInWarpCore:7];
[cruiser energyLevelInWarpCore:8];

还有方法调用后是否可以获取到参数?就像下面的代码。

id cruiser = [Cruiser cruiser];
[cruiser stub:@selector(energyLevelInWarpCore:)];
[cruiser energyLevelInWarpCore:7];
[cruiser energyLevelInWarpCore:8];
[[[[[cruiser stub] calles][1] arguments][0] should] equal:theValue(8)]; // This doesn't work

最佳答案

您有真实的代码示例吗?在您给出的示例中,您在测试的顶部添加了 energyLevelInWarpCore: ,因此测试永远不会失败,因为您没有调用任何其他代码。您真正要做的就是使用测试框架。

假设您有一个 Cruiser 对象,它有一个 WarpCore 实例。向 Cruiser 发送消息 engage 应该启动曲速核心,然后将其加电至全速:

describe(@"Cruiser", ^{
describe(@"-engage", ^{
it(@"primes the warp core then goes to full speed", ^{
id warpCore = [WarpCore mock];
Cruiser *enterprise = [Cruiser cruiserWithWarpCore:warpCore];

[[[warpCore should] receive] setEnergyLevel:7];
[[[warpCore should] receive] setEnergyLevel:8];

[enterprise engage];
});
});
});

Message patterns是测试参数的一种方法(您也可以使用 receive:withArguments:)。上面的例子表明,为同一个选择器设置两个期望值,但参数不同,会导致两个独特的断言。

您还可以使用 Capture Spies测试 more complex scenarios, such as asynchronous code 中的参数.

关于objective-c - 如何使用kiwi测试函数调用的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17131333/

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