如何在 Xcode 中设置 XCTest 的起点

问题描述 投票:0回答:1

我试着习惯在Xcode上使用XCTest。

但是我公司要测试的应用程序必须先从服务器接收令牌或用户信息或一些数据才能调用函数。

因此,很难插入单元测试,因为单元测试代码是在从服务器获取令牌之前执行的。

是否可以在要测试的源中设置测试代码的起点?并在特定 viewController 出现后开始 XCTest 源代码?

我找到了一种插入“DispatchQueue.global().asyncAfter”的方法,但我认为这不是合适的解决方案。

swift xcode unit-testing xctest
1个回答
1
投票

我认为解决您的问题的方法称为“依赖注入”。你应该谷歌它。它用于所有面向对象的语言,与 Swift 或 Xcode 无关。

基本上,这意味着您将不想测试的类(例如在您的情况下是某种网络接口)注入到要测试的类中。在您的生产代码中,您将注入与您的服务器或其他任何东西通信所需的实际类,在您的单元测试中,您将注入某种伪造/存根/模拟对象,而不是假装表现得像实际类但实际上只做任何你需要运行单元测试的事情。例如,当您要测试的类从服务器请求令牌时,伪造的网络接口不会实际发出请求,而是简单地返回一个硬编码的令牌值。这是编写单元测试的正确方法。但是,如果在设计代码架构时没有考虑编写单元测试,这通常意味着代码的重大重构将不可避免。

您可能会发现这些链接很有用:

© www.soinside.com 2019 - 2024. All rights reserved.