使用单元测试时避免运行部分代码
Posted
技术标签:
【中文标题】使用单元测试时避免运行部分代码【英文标题】:Avoid run part of code when use Unit test 【发布时间】:2017-11-27 15:39:23 【问题描述】:我希望在运行应用程序进行单元测试时不执行我的部分代码,问题是我的功能之一是将一个对象保存在 BD 中,我想避免这种情况。
api.getUsers(completion:(objects)
//In this response I save the object in BD
)
【问题讨论】:
定义一个用于测试的方案变量并检查该变量是否为假以执行该代码 查看这个答案***.com/questions/45659435/… 为什么不直接使用(连接)一个全新的数据库进行测试? 设计越好,测试就越容易。 “这很难测试”的感觉试图告诉你一些事情:设计可以改进。寻找方法将持久性提取到一个单独的、可替换的类中。 【参考方案1】:我不认为你真的想在运行时有条件地执行某些东西,如果你正在运行单元测试。恕我直言,这将是一个糟糕的主意。
您可能希望在单元测试中创建一个 api
类的 mock 对象,然后将模拟版本注入您正在测试的类中。
【讨论】:
【参考方案2】:您的操作系统是否具有环境价值?在 React 中,我通过检查 process.env.NODE_ENV !='test'
【讨论】:
【参考方案3】:您可以在方案属性(测试部分)中设置启动时参数,例如 isTest
至 YES
。
并且,在你的函数中使用这个:
BOOL isTest = [[NSUserDefaults standardUserDefaults] boolForKey:@"isTest"];
【讨论】:
显然无法从NSUserDefaults
读取启动参数。为了使它起作用,您需要阅读ProcessInfo.processInfo.launchArguments
。投票否决,因为 OP 可能希望对此采取稍微不同的方法。以上是关于使用单元测试时避免运行部分代码的主要内容,如果未能解决你的问题,请参考以下文章