【问题标题】:Mocking an EvironmentObject in PreviewProvider在 PreviewProvider 中模拟 EvironmentObject
【发布时间】:2019-06-09 10:37:00
【问题描述】:

我正在使用 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
    }
}

【问题讨论】:

    标签: swift swiftui


    【解决方案1】:

    这在我的 ListData 类中运行良好:

    #if DEBUG
    
    let mockedListView = ListView().environmentObject(ListData())
    
    #endif
    

    【讨论】:

      猜你喜欢
      • 2019-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      • 2011-09-12
      相关资源
      最近更新 更多