ios - OCMock:返回与通过参数获取相同的值
问题描述
在使用 OCMock 框架编写单元测试时,我遇到了一些具体的问题。
假设我有一些带有一个参数的方法。我需要的是存根该方法并返回相同的值。该值是计算出来的,所以我不能只通过通常的存根返回一些预定义的值。
该方法的伪声明(objc):
- (id)doSomething:(id)value;
解决方案
您可以使用 OCMock 的 Method Swizzling 功能:
@implementation OCmockPlaygroundTests
- (void)testStub{
TestClass * mockObject = OCMPartialMock([TestClass new]);
OCMStub([mockObject doSomethingWith:OCMOCK_ANY]).andCall(self, @selector(doSomethingWith:));
NSString * testInput = @"TEST_INPUT";
NSString * result = [mockObject doSomethingWith:testInput];
XCTAssertTrue([testInput isEqualToString:result]);
}
- (NSString *)doSomethingWith:(NSString *)input{
return input;
}
@end
而不是 OCMock 的doSomethingWith:
方法,TestClass
而是调用测试用例中定义的实现,它只返回输入。
推荐阅读
- javascript - React re-rending 手动路由仅在刷新一次时有效
- jmeter - 是否可以在 JMeter 中为每个线程分配某些数据行?
- angular - 嵌套组件不适用于 Angular 中的路由
- mysql - 用于连接名称和日期的 SQL 存储函数
- c++ - C ++递增全局声明的计数器
- javascript - 不在集合中的高级文档
- react-native - 失去焦点后键入内容时,带有 securTextEntry 的 TextInput 会自动清除
- events - 移动传单地图时工具提示消失
- sql - 链接服务器“(null)”的 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”返回消息“JOIN 操作中的语法错误。”
- python - 没有找到cupy卷积