ios - OCMock:返回与通过参数获取相同的值

标签 ios objective-c unit-testing ocmock

我在使用 OCMock 框架编写单元测试时遇到了一些具体问题。

假设我有一些只有一个参数的方法。我需要的是 stub 该方法并获取相同的值。该值是计算出来的,因此我不能只通过通常的 stub 返回一些预定义的值。

该方法的伪声明(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 将调用测试用例中定义的仅返回输入的实现,而不是 TestClassdoSomethingWith: 方法。

关于ios - OCMock:返回与通过参数获取相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51516232/

相关文章:

php - 网比 : phpUNit or SimpleTest?

unit-testing - 有 xUnit++ 的文档吗

iphone - 解决 iphone 内存泄漏的最佳方法是什么?

iphone - 从 UITableView Cell 下载内容

objective-c - Objective-C 垃圾回收中的自有对象

objective-c - 更改 NSButton 标题位置

java - 对在 catch block 中调用 void 方法并抛出异常的方法进行单元测试

ios - 如何将后续文本添加到 uitextfield

iphone - 操作无法完成。 (OSStatus 错误 - 9800。)在 SKPSMTPMessage iPhone 5.0

javascript - 使用POST将数据发送回objective c