Swift 单元测试 - 等待 viewDidLoad
Posted
技术标签:
【中文标题】Swift 单元测试 - 等待 viewDidLoad【英文标题】:Swift Unit Test- Wait for viewDidLoad 【发布时间】:2017-02-01 13:27:32 【问题描述】:我是 Swift 单元测试的新手。现在我想测试我的 viewController。在 viewDidLoad 我有一个异步调用。因此,如果我想测试我的控制器是否正确加载了数据,则数据没有加载。我已经读到我必须构建一个 XCTestExpectation。
所以我掌握的信息,是从这个问题中得到的:XCTest Unit Test data response not set in test after viewDidLoad
答案有一个例子,我不知道如何实现。我的测试类如下所示:
import XCTest
@testable import apirequest
class SearchedForViewControllerTests: XCTestCase
var vc: SearchedForViewController!
override func setUp()
super.setUp()
let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
vc = storyboard.instantiateViewController(withIdentifier: "SearchedForViewController") as! SearchedForViewController
vc.passedString = "garten"
let _ = vc.view
func testArticlesShwon()
print(vc.tableView.numberOfRows(inSection: 0))
因此,如果我查看自己的代码,viewDidLoad 的部分发生在
let _ = vc.view
如果我想建立一个期望,我必须等待这部分。但该部分不是函数。所以我不知道如何告诉我的期望在加载后实现。
【问题讨论】:
【参考方案1】:这可能更像是一个意见/设计答案,但我强烈建议您完全分开测试您的 ViewController 和您的模型。
例如当你测试你的 VC 时,在你的测试中手动设置数据,然后分别进行测试以确保你的模型和任何网络/异步调用正常运行。
【讨论】:
以上是关于Swift 单元测试 - 等待 viewDidLoad的主要内容,如果未能解决你的问题,请参考以下文章