【发布时间】:2022-08-17 02:37:01
【问题描述】:
我正在尝试测试一个 SwiftUI 视图,该视图在其主体中具有来自另一个模块的子视图:
import SwiftUI
import Abond
struct ProfileView: PresentableView, LoadedView {
@State var isLoading = true
public var body: some View {
Load(self) {
AbondProfile(onSuccess: self.onSubmitSuccess)
}
}
func load() -> Binding<Bool> {
ProfileApi.getProfileAccessToken() { result in
switch result {
case .success(let response):
Abond.accessToken = response.accessToken
case .failure(let error):
print(\"error getting token\")
}
isLoading = false
}
return $isLoading
}
func onSubmitSuccess() {
print(\"success\")
}
}
我的问题是:如果我想测试 ProfileView 的生命周期而不构建实际的 AbondProfile 视图,有没有办法模拟它?如果它是一个正常的方法,我会注入一个依赖对象,但我不知道如何将它转换为结构初始化程序。
Abond 是一个 Swift 包,所以我不能修改 AbondProfile。而且我希望能够在尽可能少地更改我的视图代码的情况下对此进行测试。我正在使用 XCTest。
-
Load(self)是什么? -
@Asperi 这是我编写的一个辅助视图,它显示全屏加载动画并调用
load(),然后在isLoading绑定更改为false 时呈现主体:gist.github.com/mckeed/5eca743383852749add9050801d291ec