【发布时间】:2019-11-26 09:59:53
【问题描述】:
您好,我正在为ViewModel 中的一个函数编写一个测试用例,其中我使用的是弱变量,
在测试函数时,弱变量变为 nil ,我也在调用测试函数之前实例化了它并为该对象提供了值。为什么它变成了 nil ,那我该如何测试呢!!!
我也不能将弱变量设为强类型!!,正在处理其他代码
编译器警告 - 实例将立即被释放,因为属性“源”是“弱”
代码
func testFundTrip() {
viewModel.source = SourceViewTypeMock()
viewModel.fundTrip(trip)
}
在 ViewModel 中
func fundTrip(_ trip: TravelTrip) {
if let source = source {
// Here source is becoming nil ?? why
}
}
测试用例方法是否有变量范围的东西?
【问题讨论】:
-
只是一个可能有帮助的评论,我认为您可能对它的架构有疑问。如果
SourceViewTypeMock是UIView的子类,则不应将其传递给 ViewModel。拥有 ViewModel 的目的是将业务逻辑与 UI 代码分开。您不应该将 UIKit 导入 ViewModel。虚拟机应该触发网络代码、获取响应、格式化、将格式存储在某处并通过委托/协议或回调等通知视图。 -
@simon 事情是 sourceviewtypemock 是符合某些 sourcevietype 协议的类,根本不使用或导入 uikit
标签: ios swift xctest xctestcase