Sync migrated iOS modules
This commit is contained in:
35
suixinkanTests/TestFixture.swift
Normal file
35
suixinkanTests/TestFixture.swift
Normal file
@ -0,0 +1,35 @@
|
||||
//
|
||||
// TestFixture.swift
|
||||
// suixinkanTests
|
||||
//
|
||||
// Created by Codex on 2026/6/22.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
@testable import suixinkan
|
||||
|
||||
/// 测试 Fixture 读取工具,用于复用旧工程迁移过来的 JSON 响应。
|
||||
enum TestFixture {
|
||||
/// 读取指定名称的 JSON fixture。
|
||||
static func data(named name: String, filePath: String = #filePath) throws -> Data {
|
||||
let url = URL(fileURLWithPath: filePath)
|
||||
.deletingLastPathComponent()
|
||||
.appendingPathComponent("Fixtures")
|
||||
.appendingPathComponent("\(name).json")
|
||||
return try Data(contentsOf: url)
|
||||
}
|
||||
|
||||
/// 读取并解包后端统一 Envelope。
|
||||
static func payload<T: Decodable>(_ type: T.Type, named name: String) throws -> T {
|
||||
let envelope = try JSONDecoder().decode(APIEnvelope<T>.self, from: data(named: name))
|
||||
guard let payload = envelope.data else {
|
||||
throw FixtureError.emptyPayload
|
||||
}
|
||||
return payload
|
||||
}
|
||||
}
|
||||
|
||||
/// 测试 Fixture 错误实体。
|
||||
enum FixtureError: Error {
|
||||
case emptyPayload
|
||||
}
|
||||
Reference in New Issue
Block a user