我正在尝试在合并框架和 SwiftUI 中测试一个简单的发布者。我的测试在我的视图模型中测试了一个名为 isValid 的已发布布尔值。我的视图模型还有一个已发布的用户名字符串,当该字符串发生更改并变为 3 个或更多字符时,isValid 会被分配该值。这是视图模型。我确信我不了解发布商如何在测试环境、时间安排等中工作......提前致谢。
public class UserViewModel: ObservableObject {
@Published var username = ""
@Published var isValid = false
private var disposables = Set<AnyCancellable>()
init() {
$username
.receive(on: RunLoop.main)
.removeDuplicates()
.map { input in
print("~~~> \(input.count >= 3)")
return input.count >= 3
}
.assign(to: \.isValid, on: self)
.store(in: &disposables)
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的观点,这里并不重要
struct ContentView: View {
@ObservedObject private var userViewModel = UserViewModel()
var body: some View {
TextField("Username", text: $userViewModel.username)
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的测试文件和失败的单个测试
class StackoverFlowQuestionTests: XCTestCase …Run Code Online (Sandbox Code Playgroud)