用于视图单元测试的 SwiftUI 架构 [已关闭]

SwiftUI architecture for view unit testing [closed]

提问人:Round_Square 提问时间:11/17/2023 更新时间:11/17/2023 访问量:41

问:


想改进这个问题吗?更新问题,以便可以通过编辑这篇文章用事实和引文来回答。

6天前关闭。

我们有一个使用 SwiftUI 构建的 app,使用 MVVM 架构,我们希望在视图级别实现单元测试。因此,举个例子,视图是这样的:

struct RandomView<InjectedModel>: View where InjectedModel: InjectedModelViewModelProtocol {
    @StateObject var viewModel: InjectedModel

    init(
        viewModel: @autoclosure @escaping () -> InjectedModel
    ) {
        self._viewModel = StateObject(wrappedValue: viewModel())
    }

视图模型协议将由一个接口表示,例如:

protocol InjectedModelViewModelProtocol: ObservableObject {
    var someProperty: String { get set }
    func someMethod()
}

这样做的原因是,我们想要模拟视图模型并测试视图,以查看字段中的正确值/元素等(作为参考,我们仍将使用标准 UI 测试中可用的 API 和其余 API)。XCUIElement

到目前为止,这仍然有效,它允许在运行测试时模拟视图模型。但现在的问题是:视图是否可以以这种方式注入视图模型,涉及性能和其他 SwiftUI 行为?我们计划像这样构建每个小视图。我知道苹果在其WWDC的一次演讲中提到,实际上没有任何东西可以符合协议。此外,不确定这种处理视图模型属性的方式有多好,以及我们是否会遇到任何限制或其他问题。

我已经尝试过这个解决方案,适用于小迭代,但从长期发展的角度来看,我想知道。

iOS Swift SwiftUI MVVM 组合

评论


答: 暂无答案