ios - 如何使用 OCMockito stub CocoaLumberjack 或 NSLog

标签 ios objective-c unit-testing mocking ocmockito

我可以对类方法进行 stub /验证,但我在定义宏时遇到困难。我正在尝试测试我的方法之一调用 DDLogInfo。

它在 CocoaLumberjack 源代码中是这样定义的

#define DDLogInfo(frmt, ...)    LOG_MAYBE(LOG_ASYNC_ENABLED, LOG_LEVEL_DEF, DDLogFlagInfo,    0, nil, __PRETTY_FUNCTION__, frmt, ##__VA_ARGS__)

谢谢!

最佳答案

所有标准的 DDLog 宏调用 +[DDLog log:level:flag:context:file:function:line:tag:format:],所以对于 OCMock,你将验证 DDLogInfo 被调用:

- (void)testMethodCallsDDLogInfo {
    id mockDDLog = OCMClassMock([DDLog class]);

    [obj methodThatCallsDDLogInfo];

    OCMVerify([mockDDLog log:YES level:DDLogLevelAll flag:DDLogFlagInfo context:0 file:[OCMArg anyPointer] function:[OCMArg anyPointer] line:58 tag:[OCMArg any] format:[OCMArg any]]);
}

不幸的是,使用这种策略你必须硬编码几个值,因为 OCMock 没有办法指定通用的非指针参数。

关于ios - 如何使用 OCMockito stub CocoaLumberjack 或 NSLog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29957206/

相关文章:

ios - SwiftUI - 如何将 EnvironmentObject 传递给 View 模型?

objective-c - 在类之间传递数据

ios - 如何使用自动布局为 UIViews 设置相等的宽度 "Constraint with item format"

ios - 设置CAShapeLayer lineWidth小于1

android - 我对登录到远程服务器的 Repository 类的单元测试有多有效?

ios - MKAnnotation 无需点击即可显示所有 pin 标题

ios - 如何设置 Tableview 单元格的 alpha 值

java - 在 junit 类中有辅助方法

javascript - 使用 QUnit 测试 JS 方法是否抛出 RangeError

ios - 概念化商店结账 channel 的 parse.com 数据结构