【发布时间】:2016-08-27 08:35:24
【问题描述】:
我有一个方法(初始化器)需要测试:
public convenience init(jsonString: String, identifier: String, editable: Bool) throws {
if let data = jsonString.dataUsingEncoding(NSUTF8StringEncoding) {
try self.init(jsonData: data, identifier: identifier, editable: editable)
} else {
throw ToggleSetJSONStringError.JSONStringEncodingError
}
}
我必须编写一个单元测试来检查它是否正确抛出任意JSONStringEncodingError。我很难想出什么时候会发生这种情况。我知道dataUsingEncoding: 将在字符串无法转换为目标编码时返回nil,但我不知道实际上是如何导致的。我试过了,f.ex.:
func testThatItThrowsJSONStringEncodingErrorWhenInitializedWithJSONNotConvertibleToUTF8String() {
let jsonNonConvertibleString = "????????????"
do {
let _ = try ToggleSet.init(jsonString: jsonNonConvertibleString, identifier: "not relevant here", editable: true)
XCTFail("ToggleSetError.JSONStringError error should be thrown.")
} catch let e as ToggleSetJSONStringError {
XCTAssertEqual(e, ToggleSetJSONStringError.JSONStringEncodingError)
}
catch {
XCTFail("Wrong error thrown, should be: ToggleSetError.JSONStringEncodingError")
}
}
但是仍然没有抛出提到的错误。对于无法转换为 UTF8 编码的字符串有什么创意吗?
【问题讨论】:
标签: ios string swift encoding error-handling