9

我们正在尝试创建一个单元测试(尽管使用 OCMock,但对其他框架开放),它模拟一个在类加载时有副作用的类。

我们有一个跟踪类,它封装了对 Flurry 等其他跟踪库的调用。

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

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

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

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

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

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

1 回答 1

3

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

于 2014-02-06T16:23:27.990 回答