私は、テストに必要な方法(初期化子)があります。NSStringのdataUsingEncodingを引き起こす方法:メソッドは、nilを返しますか?
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エンコーディングに変換できない文字列の創造的なアイデアですか?