我有一个具有类方法的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!
我错过了什么?似乎这应该有用
答案 0 :(得分:1)
我同意Bryan的说法,因为你想测试类别方法的实现,所以你不需要在这里模拟。例如:
-(void)testAppropriateColorWithBlackShouldReturnWhiteColor
{
UIColor *appropriateColor = [color appropriateTextColorForBackground:black];
assertThat(appropriateColor, is(equalTo([UIColor whiteColor])));
}
你也可能想要对相反的颜色进行类似的测试。我可能会更进一步,将使用变化边界上的颜色进行亮度计算(而不是黑色和白色)。然而,某人(不是我)可能会认为这会暴露实施细节,这通常是在编写单元测试时要避免的事情。