Class
SwiftUI が機能しなくなるため、最近、 a のモックを作成する必要があることに気づきpreview
ました。残念ながら、次のエラーが表示されます。
Property type 'T' does not match that of the 'wrappedValue' property of its wrapper type 'EnvironmentObject'
ビュー構造体で:
struct ContentView<T>: View {
@EnvironmentObject var mockFoobar: T
...
}
また、エラー:
Type of expression is ambiguous without more context
Preview 構造体の場合:
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
let mockFoobar: MockFoobar = MockFoobar()
return ContentView<MockFoobar>()
.environmentObject(mockFoobar)
}
}
MockFoobar クラスは次のとおりです。
class MockFoobar: ObservableObject {
...
}
ユーザー@Aspergiが親切に提供してくれたように、提案されたとおりに次のことをテストしました。
class Foobar: ObservableObject {
@Published var param: Bool = false
func start() {
self.param = true
}
}
struct MyFoobarView<T: ObservableObject>: View {
@EnvironmentObject var foobar: T
var body: some View {
VStack {
Text("Hello Foobar")
}
.onAppear {
self.foobar.start()
}
}
}
struct MyFoobarView_Previews: PreviewProvider {
static var previews: some View {
let foobar: Foobar = Foobar()
return MyFoobarView()
.environmentObject(foobar)
}
}
しかし、次のエラーが発生します ( .onAppear
PreviewProvider の最初のエラーと 2 番目のエラー):
Cannot call value of non-function type 'Binding<Subject>'
Generic parameter 'T' could not be inferred