单元测试 VIPER 协议
unit testing VIPER protocols
在阅读了有关此问题的几篇文章和文章后,我仍然对如何在 VIPER 架构中测试方法感到困惑(例如 Swift)。
如果我有这个代码:
主持人class
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)
}
}
互动者class:
protocol PresenterToInteractorProtocol: class {
func makeSomeStuffInInteractor()
}
class Interactor {
private var presenter: InteractorToPresenterProtocol?
init() {}
}
extension Interactor : PresenterToInteractorProtocol {
func makeSomeStuffInInteractor() {
// make some stuff
...
presenter?.showInfo(info)
}
}
我应该如何测试 makeSomeStuffInPresenter 方法?
您可以查看附件sample.
下面是对viper架构的基本了解
视图:管理显示给用户的视图。
Interactor:处理业务逻辑。
Presenter:控制View和Interactor之间的通信。
实体:是模态 classes。
Router:负责管理Navigation。
编写单元测试用例。
对于交互器:您可以将交互器协议选择为模拟 class 并使用正面和负面案例调用它的功能,您的 Presenter 将满足测试用例的期望。
对于 Presenter :同样,您可以模拟 Interactor、View 并调用 Presenter 函数,视图将满足测试用例的期望。
一般来说,对于 {V,I,P,E,R} 中的每个区域 z,您可以模拟其他 4 个具有模拟简单完美性和可重复性的模型,以便被测区域 (ZUT)是唯一一个真正的源代码正在被执行(隔离)的区域。
在阅读了有关此问题的几篇文章和文章后,我仍然对如何在 VIPER 架构中测试方法感到困惑(例如 Swift)。
如果我有这个代码:
主持人class
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)
}
}
互动者class:
protocol PresenterToInteractorProtocol: class {
func makeSomeStuffInInteractor()
}
class Interactor {
private var presenter: InteractorToPresenterProtocol?
init() {}
}
extension Interactor : PresenterToInteractorProtocol {
func makeSomeStuffInInteractor() {
// make some stuff
...
presenter?.showInfo(info)
}
}
我应该如何测试 makeSomeStuffInPresenter 方法?
您可以查看附件sample.
下面是对viper架构的基本了解
视图:管理显示给用户的视图。 Interactor:处理业务逻辑。 Presenter:控制View和Interactor之间的通信。 实体:是模态 classes。 Router:负责管理Navigation。
编写单元测试用例。
对于交互器:您可以将交互器协议选择为模拟 class 并使用正面和负面案例调用它的功能,您的 Presenter 将满足测试用例的期望。
对于 Presenter :同样,您可以模拟 Interactor、View 并调用 Presenter 函数,视图将满足测试用例的期望。
一般来说,对于 {V,I,P,E,R} 中的每个区域 z,您可以模拟其他 4 个具有模拟简单完美性和可重复性的模型,以便被测区域 (ZUT)是唯一一个真正的源代码正在被执行(隔离)的区域。