小编use*_*387的帖子

如何正确测试 XCTestCase 中 viewModel 中通过发布者更改的 var

我正在尝试在合并框架和 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)

swift swiftui combine

9
推荐指数
2
解决办法
2187
查看次数

标签 统计

combine ×1

swift ×1

swiftui ×1