gpt4 book ai didi

ios - XCTest 用于模型对象中的测试 setter

转载 作者:行者123 更新时间:2023-11-29 01:20:51 25 4
gpt4 key购买 nike

我有一个带有计算变量的模型对象。现在我想测试变量的 setter 。我写了一个测试用例,它给出了以下错误

XCTAssertEqual failed: ("nil") is not equal to ("Optional("example@gmail.com")") -

下面我提到了我写的测试用例

func testNetworkModelObjectSet() {

let testObject = ["network": ["first_name": "Dimuth", "last_name": "Lasantha", "business_email": "testemail@gmail.com", "currency": "USD", "language": "en-us", "category": "individual"]]

let network = HVConnection(data: testObject)

network.business_email = "example@gmail.com"

XCTAssertEqual(network.business_email, "example@gmail.com")
}

这里我提到了相关的模型对象变量

class HVConnection: NSObject {

//private var _data: NSMutableDictionary
private var _data: NSMutableDictionary

// MARK:- Init

init(data: NSDictionary)
{
_data = NSMutableDictionary(dictionary: data)
}

var business_email: String? {

get {
if let businessemailObject = _data.objectForKey("network")?.objectForKey("business_email") {
return (businessemailObject as! String)
} else {
return nil
}
}

set {
_data = ["business_email": newValue!]
}
}
}

最佳答案

您正在从 _data["network"]["business_email"] 读取数据,但正在写入 _data["business_email"]。您应该根据规范更新 getter 或 setter。

作为旁注,您可以以更短/更易读的方式重写 getter:

get {
return _data["network"]?["business_email"] as? String
}

optional chaining Swift 的特性使得在方法调用链中检查 nil 变得非常容易。

另请注意,如果传递 nil 值,setter 将使应用程序崩溃,因为在尝试解包 nils 时强制解包会崩溃。

关于ios - XCTest 用于模型对象中的测试 setter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34616492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com