ios - 泛型类型“结果”专用于类型参数太少(得到 1,但预期为 2)- swift 单元测试中的错误
问题描述
我已经为 JSON 编码编写了一个测试用例,但出现以下错误
泛型类型“结果”专用于太少的类型参数(得到 1,但预期为 2)
我是编写测试的新手,任何形式的帮助都将不胜感激。下面是代码片段。
func test_encodeDecodeToFile_happy() {
let testData = TestData(name: "test", number: 42)
let url = urlForFile(name: writableFile1)
let encoded = JsonFileCoder.EncodeToFile(encoded: testData, url: url)
XCTAssertTrue(encoded)
let result: Result<TestData> = JsonFileCoder.DecodeFile(url: url)
switch result {
case .Success(let decoded):
XCTAssert(decoded.name == testData.name)
XCTAssert(decoded.number == testData.number)
case .Failure(let err):
XCTFail((err?.localizedDescription)!)
}
}
JsonFileCoder.swift
static func EncodeToFile<T: Encodable>(encoded: T, url: URL) -> Bool {
if let data = Encode(encoded: encoded) {
do {
try data.write(to: url)
return true
} catch {
print("Could not encode \(error.localizedDescription)")
return false
}
}
return false
}
static func Encode<T: Encodable>(encoded: T) -> Data? {
if let data = try? JSONEncoder().encode(encoded) {
return data
}
return nil
}
static func DecodeFile<T: Decodable>(url: URL) -> CurveResult<T> {
if let data = try? Data(contentsOf: url, options: .mappedIfSafe) {
return Decode(data: data)
}
print("Could not decode \(url.absoluteString)")
return CurveResult.Failure(JsonFileError.couldNotDecode)
}
static func Decode<T: Decodable>(data: Data) -> CurveResult<T> {
if let decoded = try? JSONDecoder().decode(T.self, from: data) {
return CurveResult.Success(decoded)
}
return CurveResult.Failure(JsonFileError.couldNotDecode)
}
解决方案
推荐阅读
- json - 从 azure Form Recognizer 可视化来自 JSON 文件的表数据
- reactjs - 使用 axios 在反应中可观察到的 Redux
- javascript - 动态添加带值的输入滑块
- actionscript-3 - 即使在我更改默认文本格式之后,TextField 也会在焦点上切换到原始默认文本格式
- jquery - 使用锁定和解锁列时,如何找出当前正在编辑的单元格在表格的哪个部分?
- c# - SSRS 交付扩展示例或教程或示例
- php - Can't get new environment variable via getenv
- http - 颤振无法通过http和dio获得响应
- python - 二级 Flask 服务器
- docker - 在 docker 容器中使用 docker 命令(托管),非 root 用户作为 Jenkinsfile 代理