gpt4 book ai didi

swift - 单元测试异步等待失败: Exceeded timeout Swift

转载 作者:行者123 更新时间:2023-11-28 07:32:44 26 4
gpt4 key购买 nike

我正在尝试对我的应用程序进行单元测试,但大部分测试都失败了,原因是异步等待失败:超过 30 秒的超时时间,未满足预期:“Home Code”。

我不知道为什么会这样失败,但这是我下面的代码

class HomeTest: XCTestCase {

override func setUp() {
}

override func tearDown() {
}

func testHome() {
let expec = expectation(description: "Home Code")
let presenter = HomePresenter(view: HomeTestVC(expectation: expec), source: Repository.instance)
presenter.start()
wait(for: [expec], timeout: 30)
}

func testPerformanceExample() {
self.measure {
}
}

}


class HomeTestVC: HomeContract.View {
func showRatingForLastTrip(_ trip: Trip) {}

func setProgress(enabled: Bool) {}

func didFail(message: String) {}

func didShowError(error: Error) {}

func didShowStatusCode(code: Int?) {
XCTAssertGreaterThan(200, code ?? 0)
self.expec.fulfill()
}

var expec: XCTestExpectation
init(expectation: XCTestExpectation) {
self.expec = expectation
}
}

它会弹出模拟器,但只停留在第一个屏幕上。我不知道为什么。任何帮助将不胜感激

最佳答案

您没有实现您的期望

func testExample() {
let expec = expectation(description: "Home Code")
someAsyncTask() { _ in
expectation.fulfill()
}
wait(for: [expec], timeout: 30)
}

参见 Testing Asynchronous Operations with Expectations

注意事项:

  • 不要像您目前那样将单元测试特定代码传递给生产代码。
  • 加载 VC 不是异步任务。所以不需要期望
  • 您可能不应该直接加载 Home 类,尤其是当它触发某些异步任务时。您应该考虑单独测试异步部分并使用 Mocks/Stubs

关于swift - 单元测试异步等待失败: Exceeded timeout Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54234415/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com