Насмешка объекта EvironmentObject в PreviewProvider - PullRequest
2 голосов
/ 09 июня 2019

Я играю с SwiftUI, используя EnvironmentObject для моего источника данных. Мне интересно, как я могу издеваться над этим при использовании 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
    }
}

1 Ответ

0 голосов
/ 09 июня 2019

Это нормально работало, в моем классе ListData:

#if DEBUG

let mockedListView = ListView().environmentObject(ListData())

#endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...