3

在阅读了有关此问题的几篇文章和文章后,我仍然对如何在 VIPER 架构中测试方法(例如使用 Swift)感到困惑。

如果我有这个代码:

演示者类

protocol InteractorToPresenterProtocol: class {

    func showInfo(info: Info)
}

class Presenter {

    private var interactor: PresenterToInteractorProtocol?

    init() {}

    func makeSomeStuffInPresenter() {

        // make some stuff 
        ...
        interactor?.makeSomeStuffInInteractor()
    }
}

extension Presenter : InteractorToPresenterProtocol {

    func showInfo(info: Info) {

       print(info)
    }    
}

交互类:

protocol PresenterToInteractorProtocol: class {

    func makeSomeStuffInInteractor()
}

class Interactor {

    private var presenter: InteractorToPresenterProtocol?

    init() {}
}

extension Interactor : PresenterToInteractorProtocol {

    func makeSomeStuffInInteractor() {

       // make some stuff 
       ...
       presenter?.showInfo(info)
    }    
}

我应该如何测试 makeSomeStuffInPresenter 方法?

4

1 回答 1

3

您可以查看随附的样本。

下面是对viper架构的基本理解。

视图:管理向用户显示的视图。交互者:处理业务逻辑。Presenter:控制 View 和 Interactor 之间的通信。实体:是模态类。路由器:负责管理导航。

编写单元测试用例。

对于 Interactor :您可以将 Interactor 协议选择到模拟类,并使用正面和负面案例调用它的功能,您的 Presenter 将满足测试用例的期望。

对于 Presenter :同样,您可以模拟 Interactor、View 和调用 Presenter 函数,并且视图将满足测试用例的期望。

一般来说,对于 {V,I,P,E,R} 中的每个区域 z,您可以模拟到其他 4 个具有模拟简单完美和可重复性的区域,以便被测区域 (ZUT) 是唯一的区域正在执行真正的源代码(孤立地)。

于 2021-01-11T07:31:36.503 回答