首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弱变量在写测试用例时变成零?

弱变量在写测试用例时变成零?
EN

Stack Overflow用户
提问于 2019-11-26 09:59:53
回答 1查看 375关注 0票数 0

嗨,我正在为ViewModel中的一个函数编写一个测试用例,在这里我使用一个弱变量,

在测试函数时,弱变量变为零,我还实例化了它,并在调用测试函数之前为该对象提供了值。为什么它变成零,然后我如何测试它!

我也不能使弱变量强类型!,处理其他代码

编译器警告-实例将被立即释放,因为属性“源”是“弱”。

代码语言:javascript
复制
func testFundTrip() {
     viewModel.source = SourceViewTypeMock()
     viewModel.fundTrip(trip)
}

In ViewModel

代码语言:javascript
复制
func fundTrip(_ trip: TravelTrip) {
        if let source = source { 
          // Here source is becoming nil ?? why 
        }
    }

是否存在带有变量范围的testcase方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-26 14:23:50

警告就是告诉你到底发生了什么。您只有一个指向值的弱指针,因此没有什么可以使您的SourceViewTypeMock在赋值语句之后保持活力。解决方案是创建一个强引用。您需要一个编译器不允许优化的函数,所以它必须在此函数之外。所以你把它作为测试用例的属性。

如果它是不可变的,您可以这样做:

代码语言:javascript
复制
class TheTestCase: XCTestCase {
    let sourceMock = SourceViewTypeMock()

    func testFundTrip() {
        viewModel.source = sourceMock
        viewModel.fundTrip(trip)
    }
}

如果它是可变的,那么您可能希望确保在setUp中重新创建它

代码语言:javascript
复制
class TheTestCase: XCTestCase {
    var sourceMock: SourceViewTypeMock!

    override func setUp() {
        sourceMock = SourceViewTypeMock()
    }

    func testFundTrip() {
        viewModel.source = sourceMock
        viewModel.fundTrip(trip)
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59048230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档