gpt4 book ai didi

objective-c - 将结构与 OCMock 或 Hamcrest 结合使用

转载 作者:太空狗 更新时间:2023-10-30 03:29:13 25 4
gpt4 key购买 nike

我遇到了障碍,我想知道这里聪明的集体思想是否可以提供帮助。在 ObjC CocoaTouch 中,我试图模拟一个接受结构参数并返回结构的对象。 OCMock 正在吐出一个毛球,所以我尝试用 Hamcrest 匹配器进行包装。不死。我正在测试的功能/方法看起来像这样:

- (CLLocationCoordinate2D)pixelToLatLong:(CGPoint)aPoint;

我使用这样的代码:

#define OCMOCK_STRUCT(atype, variable) [NSValue value:&variable withObjCType:@encode(atype)]
-(void) testMyWidget
{
CLLocationCoordinate2D ulLL = (CLLocationCoordinate2D){123,456};
CLLocationCoordinate2D lrLL = (CLLocationCoordinate2D){654,321};
[[[(id)myObj expect] andReturn:OCMOCK_STRUCT(CLLocationCoordinate2D, ulLL)] pixelToLatLong:(CGPoint){0,0}];
[[[(id)myObj expect] andReturn:OCMOCK_STRUCT(CLLocationCoordinate2D, lrLL)] pixelToLatLong:(CGPoint){320,460}];//lower right point
}

有点管用。因此,在我正在测试的对象中,我进行了必要的必要编辑以在构建信息窗口中获得一个绿色条......错误......绿色按钮。当我确定我的测试应该通过时,我会收到断言失败错误。这些错误告诉我该方法被意外调用,并将这些结构的值列为问号。我尝试用 Hamcrest 匹配器包装结构,但我一无所获。我正准备打开我的调试器,这无疑会告诉我哪里出了问题。这里有人在 OCMock/Hamcrest 和结构方面遇到过类似的麻烦吗?如果是这样,处理这些类型的最佳方法是什么?

最佳答案

你非常接近。你的#define 应该是:

#define OCMOCK_STRUCT(atype, variable) [NSValue valueWithBytes:&variable withObjCType:@encode(atype)]

关于objective-c - 将结构与 OCMock 或 Hamcrest 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/516346/

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