2016-02-26 105 views
0

我想模拟UIImagePNGRepresentation使用OCMock。 UIImagePNGRepresentation接受UIImage并返回NSData。嘲笑UIImagePNGRepresentation

但似乎你不能把它当作普通函数来嘲笑它。

我试过的是以下内容,但不能编译。

id mockAlbumArt = [OCMockObject niceMockForClass:[UIImage class]]; 
id mockImageData = [OCMockObject niceMockForClass:[NSData class]]; 

id uiimageMock = [OCMockObject niceMockForClass:[UIImage class]]; 
[[[uiimageMock expect] andReturn:mockImageData] UIImagePNGRepresentation:mockAlbumArt]; 

如果你看一下UIImage的头,UIImagePNGRepresentation被定义为:

UIKIT_EXTERN NSData * __nullable UIImagePNGRepresentation(UIImage * __nonnull image);        // return image as PNG. May return nil if image has no CGImageRef or invalid bitmap format 

任何人做之前函数的嘲讽?任何帮助将不胜感激,谢谢。

回答

0

你说得对,普通函数不能被这样嘲笑。

像OCMock和OCMockito这样的模仿库提供了一种存根和验证方法调用的方法。 UIImagePNGRepresentation不是一个方法,它是一个独立的C函数。

那么你如何替换它进行测试呢?不要直接调用它,而是通过函数指针。对于正常使用,将UIImagePNGRepresentation分配给您的指针。为了测试,分配一个你定义的函数。

+0

是有道理的。谢谢。 – ykonda