我正在使用使用EnvironmentObject作为数据源的SwiftUI。我想知道在使用PreviewProvider时如何模拟这个。
下面的示例代码:
struct ListView: View {
@State private var query: String = "Swift"
@EnvironmentObject var listData: ListData
var body: some View {
NavigationView {
List(listData.items) { item in
ListItemCell(item: item)
}
}.onAppear(perform: fetch)
}
private func fetch() {
listData.fetch()
}
}
struct ListView_Previews: PreviewProvider {
static var previews: some View {
How do I mock this?
// ListView(listData: EnvironmentObject<ListData>)
}
}
class ListData: BindableObject {
var items: [ListItem] = [] {
didSet {
didChange.send(self)
}
}
var didChange = PassthroughSubject<ListData, Never>()
func fetch() {
// async call that updates my items
self?.items = someNetworkResponse
}
}
答案 0 :(得分:0)
在我的ListData类中,它工作正常:
#if DEBUG
let mockedListView = ListView().environmentObject(ListData())
#endif