首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用OCMockito测试类别类方法

使用OCMockito测试类别类方法
EN

Stack Overflow用户
提问于 2014-07-07 08:07:18
回答 1查看 222关注 0票数 1

我有一个具有类方法的UIColor类别

代码语言:javascript
复制
+(UIColor *)appropriateTextColorForBackground:(UIColor *)background
{
    //...get brightness value 
    if (brightness > 127.5f)
        return [UIColor blackColor];
    else
        return [UIColor whiteColor];
}

我想在我的测试类中使用OCMockito进行测试

代码语言:javascript
复制
-(void)testAppropriateColorWithBlackShouldReturnWhiteColor
{
    Class color = mockClass([UIColor class]);
    [color appropriateTextColorForBackground:black];
    assertThat([color testColorWithColor:black], is([UIColor whiteColor]));
}

但是我得到了一个错误

代码语言:javascript
复制
test failure: -: *** -[NSProxy doesNotRecognizeSelector:appropriateTextColorForBackground:] called!

我遗漏了什么?看起来这应该行得通。

EN

回答 1

Stack Overflow用户

发布于 2014-07-08 06:34:39

我同意Bryan的观点,你在这里不需要mock,因为你想测试你的类别方法的实现。举个例子:

代码语言:javascript
复制
-(void)testAppropriateColorWithBlackShouldReturnWhiteColor
{
    UIColor *appropriateColor = [color appropriateTextColorForBackground:black];
    assertThat(appropriateColor, is(equalTo([UIColor whiteColor])));
}

您可能还想对相反的颜色进行类似的测试。我可能会走得更远,并将使用变化边缘的颜色来计算亮度(而不是黑白)。然而,有些人(不是我)可能会认为这会暴露实现细节,这通常是编写单元测试时要避免的事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24601491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档