iOS模拟类对类加载有副作用

时间:2014-02-05 19:52:29

标签: ios unit-testing flurry ocmock xctest

我们正在尝试创建一个单元测试(使用OCMock,虽然可以打开其他框架),这样可以模拟类加载时会产生副作用的类。

我们有一个跟踪类,可以调用其他跟踪库,如Flurry。

许多其他跟踪库(特别是Flurry)在类初始化时执行代码。

单元测试失败,因为代码无法在单元测试环境中执行。理想情况下,我们希望用mock / stub替换Flurry类。

- (void) testConstruction {
    [Flurry class];
}

调用此代码时,会尝试使用SCNetworkReachability并接收exceptions ...

我们如何存根/模拟调用具有如下静态实现的Flurry?

[Flurry setAppVersion:@"1.0"];
[Flurry setCrashReportingEnabled:NO];

1 个答案:

答案 0 :(得分:3)

我会从我用于测试的构建配置中删除Flurry(从Framework搜索路径/库搜索路径中删除它)。我通过抓取Flurry头文件并使用空方法创建我自己的实现来创建我自己的虚拟Flurry。最后,如果我关心Flurry被调用,我会使用OCMock模拟我的假类。