如何解决SwiftUI - 在 UITests 中找不到 EnvironmentObject 不起作用当前选择:全局变量我的目标
我正在尝试在 UITests 中使用 @EnvironmentObject,但在运行时出现错误。
线程 1:致命错误:未找到 Person 类型的 ObservableObject。可能缺少 Person 的 View.environmentObject(_:) 作为此视图的祖先。
不起作用
import SwiftUI
@main
struct RootView: App {
var body: some Scene {
WindowGroup {
AppView()
.environmentObject(Person())
}
}
}
class Person: ObservableObject {
@Published var name = "Lex"
}
UITest
import XCTest
import SwiftUI
class AppTests: BaseUITest {
@EnvironmentObject var person: Person
func testPerson() {
assert(person.name == "Lex")
}
}
// For your info.
class BaseUITest: XCTestCase {
let app = XCUIApplication()
override func setUpWithError() throws {
continueAfterFailure = false
app.launch()
}
}
当前选择:全局变量
以下代码工作正常。
import SwiftUI
var person = Person()
@main
struct RootView: App {
var body: some Scene {
WindowGroup {
AppView()
.environmentObject(person)
}
}
}
import XCTest
class AppTests: BaseUITest {
func testPerson() {
assert(person.name == "Lex")
}
}
我的目标
我的目标是远离全局变量的使用,因为它们是代码异味。我正在尝试解决我的代码异味问题。
我正在寻找的答案可以是:
- 允许在我的 UITests 中使用 @EnvironmentObject 的解决方案!
- 解释为什么这是不可能的和/或全局变量和 @EnvironmentObject 的替代解决方案,该解决方案有效、看起来干净并且没有不同的代码味道。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。