ios - XCTest 用于测试模型对象

标签 ios xcode swift unit-testing xctest

下面我提到了我的模型对象。

class HVConnection: NSObject {

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

    // MARK:- Init

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

    // MARK:- Properties
    var last_name: String? {
        if let lastNameObject = _data.objectForKey("last_name") {
            return (idObject as! String)
        } else {
            return nil
        }
    }
}

然后我实现了一个测试用例来检查变量。 下面我提到了测试用例。

func testNetworkModelObject() {

    let connectionObject = ["network": ["first_name": "Dimuth", "last_name": "Lasantha", "business_email": "example@gmail.com", "currency": "USD", "language": "en-us", "category": "individual"]]
    let modelObject = HVConnection(data: connectionObject)

    XCTAssertEqual(modelObject.last_name, "Lasantha")
}

下面我提到了错误

XCTAssertEqual failed: ("nil") is not equal to ("Optional("Lasantha")")

请帮我解决这个问题

最佳答案

你的问题是你无法使用

_data.objectForKey("last_name")

在您的 HVConnection 中,因为它嵌套在另一个名为 network 的字典键中。

所以改用:

// MARK:- Properties
var last_name: String? {
    if let lastNameObject = _data.objectForKey("network")?.objectForKey("last_name") {
        return (lastNameObject as! String)
    } else {
        return nil
    }
}

这是为了演示正在使用的字典:

["network": // your dictionary is a dictionary within a dictionary
    ["first_name": "Dimuth", 
     "last_name": "Lasantha", 
     "business_email": "example@gmail.com", 
     "currency": "USD", 
     "language": "en-us", 
     "category": "individual"]
]

为了获取您的last_name,您必须获取关键network的字典才能获取实际的字典,一旦获得,您就可以检查该字典您可以从network key 返回last_name key 。

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

相关文章:

objective-c - 隐藏状态栏会留下空白

iphone - 代码行内存泄漏

ios - 我如何从一个按钮导航到另一个页面

ios - 安排通知每天在 X h :Y s and redirect to specific View 触发

swift - 为什么 CustomStringConvertible 协议(protocol)描述被多次调用?

swift - 如何调整宽度 tabBarController 并使其半径

objective-c - OpenGL ES 2.0 纹理映射,但显示为黑色

ios - GPUImage视频动画

ios - 突出显示 UILabel 中的子字符串

ios - 无法转换表达式的类型 '()' 'NilLiteralConverible'?