gpt4 book ai didi

ios - 使用 OCMockito 如何验证任何选择器是否已传递给方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:36 24 4
gpt4 key购买 nike

我有一个 View Controller ,它在 viewDidLoad 期间将自己添加为 UIApplicationDidBecomeActiveNotification 的观察者。我想验证是否发生了这种情况,但我不希望测试关心 View Controller 为事件注册的特定选择器。

目前我的测试看起来像这样:

- (void)testRegistersForApplicationDidBecomeActiveEvent
{
//given
MyViewController *sut = [MyViewController new];
NSNotificationCenter* mockNotificationCenter = mock([NSNotificationCenter class);

//when
[sut view];

//then
[verify([mockNotificationCenter]) addObserver:sut
selector:anything()
name:UIApplicationDidBecomeActiveNotification
object:nil];
}

...但是为选择器传递“anything()”会产生编译器错误:“ARC 不允许将 Objective-C 指针隐式转换为‘SEL’”。

如果我通过“@selector(applicationDidBecomeActive:)”而不是任何东西,我就可以使测试工作。这是 View Controller 使用的确切选择器。但如果可能的话,我更希望测试对具体实现没有那么多了解。

最佳答案

anything() 仅适用于 id ( from the OCHamcrest API ),它表示一个对象,selector 表示一个方法。

我会在 GitHub 上提出问题,现在通过指定 exact 提供额外的测试知识。

我认为这应该是很容易的贡献(因为提供精确的选择器可以用于测试)

关于ios - 使用 OCMockito 如何验证任何选择器是否已传递给方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22569365/

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