Итак, у меня есть тип, который выглядит так:
struct Identifier {
let string: String
}
extension Identifier: Decodable {
public init(from decoder: Decoder) throws {
let container = try decoder.singleValueContainer()
string = try container.decode(String.self)
}
}
Смысл этого типа в том, что если у меня есть JSON, который выглядит следующим образом:
{
"identifier": "abc123",
// more properties ...
}
... он будет автоматически сериализован в нужный тип без особых усилий. Однако у меня возникают проблемы с модульным тестированием этого соответствия Decodable
без создания типа упаковки.
Я хочу сделать что-то вроде этого:
func testDecodableInit() {
let identifier = try! JSONDecoder().decode(Identifier.self, from: "1".data(using: .utf8)!)
XCTAssertEqual(identifier.string, "1")
}
Но, очевидно, это не работает, потому что "1"
не является допустимым JSON.
Можно ли написать модульный тест для этого соответствия в Decodable
без создания типа переноса и изменения данных на допустимый JSON?