【发布时间】:2018-04-09 09:43:29
【问题描述】:
尝试设置执行网络请求并尝试序列化响应的单元测试。我目前收到错误:Ambiguous reference to member 'jsonObject(with:options:)'。对为什么会发生这种情况感到困惑,因为单元测试应该知道什么 JSONSerialization。是?
func testAccessKeys() {
let expected = expectation(description: "Run the Access request")
sut.request(.Access, data: nil) { finished, response in
if response != nil && finished == true {
guard let json = try? JSONSerialization.jsonObject(with: response!, options: .mutableContainers) as! [String:Any] else { return XCTFail("Access request was not a dictionary")}
XCTAssertNotNil(json?["id"])
expected.fulfill()
} else {
XCTFail("Access response was nil")
}
}
waitForExpectations(timeout: 3) { error in
if let error = error {
XCTFail("Access request failure: \(error)")
}
}
}
【问题讨论】:
-
如果您使用的是 Swift 4,最好使用新的
Codable协议和JSONDecoder类 -
JSONSerialization 应该在这种情况下工作,因为从这个请求中只会收到两个值。
-
只要响应是数据类型,那么这应该可以工作,它看起来像正确的语法。确保您在测试顶部导入了基础,您使用的是什么 swift 版本?
-
就是这样,已将响应映射为 Any!谢谢
标签: ios json swift json-serialization