嗨,我正在为ViewModel中的一个函数编写一个测试用例,在这里我使用一个弱变量,
在测试函数时,弱变量变为零,我还实例化了它,并在调用测试函数之前为该对象提供了值。为什么它变成零,然后我如何测试它!
我也不能使弱变量强类型!,处理其他代码
编译器警告-实例将被立即释放,因为属性“源”是“弱”。
码
func testFundTrip() {
viewModel.source = SourceViewTypeMock()
viewModel.fundTrip(trip)
}In ViewModel
func fundTrip(_ trip: TravelTrip) {
if let source = source {
// Here source is becoming nil ?? why
}
}是否存在带有变量范围的testcase方法?
发布于 2019-11-26 14:23:50
警告就是告诉你到底发生了什么。您只有一个指向值的弱指针,因此没有什么可以使您的SourceViewTypeMock在赋值语句之后保持活力。解决方案是创建一个强引用。您需要一个编译器不允许优化的函数,所以它必须在此函数之外。所以你把它作为测试用例的属性。
如果它是不可变的,您可以这样做:
class TheTestCase: XCTestCase {
let sourceMock = SourceViewTypeMock()
func testFundTrip() {
viewModel.source = sourceMock
viewModel.fundTrip(trip)
}
}如果它是可变的,那么您可能希望确保在setUp中重新创建它
class TheTestCase: XCTestCase {
var sourceMock: SourceViewTypeMock!
override func setUp() {
sourceMock = SourceViewTypeMock()
}
func testFundTrip() {
viewModel.source = sourceMock
viewModel.fundTrip(trip)
}
}https://stackoverflow.com/questions/59048230
复制相似问题