1

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

+(UIColor *)appropriateTextColorForBackground:(UIColor *)background
{
    //...get brightness value 
    if (brightness > 127.5f)
        return [UIColor blackColor];
    else
        return [UIColor whiteColor];
}

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

-(void)testAppropriateColorWithBlackShouldReturnWhiteColor
{
    Class color = mockClass([UIColor class]);
    [color appropriateTextColorForBackground:black];
    assertThat([color testColorWithColor:black], is([UIColor whiteColor]));
}

但我得到了错误

test failure: -: *** -[NSProxy doesNotRecognizeSelector:appropriateTextColorForBackground:] called!

我错过了什么?看来这应该可行

4

1 回答 1

1

我同意 Bryan 的观点,因为您想测试类别方法的实现,所以您不需要在这里模拟。例如:

-(void)testAppropriateColorWithBlackShouldReturnWhiteColor
{
    UIColor *appropriateColor = [color appropriateTextColorForBackground:black];
    assertThat(appropriateColor, is(equalTo([UIColor whiteColor])));
}

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

于 2014-07-07T22:34:39.083 回答