json에서 ObjectMapper를 쓰는 클래스 테스트를 읽습니다.

ObjectMapper는 스위프트의 제이슨 파어 중 하나다.
Mappable을 상속하여 Enity Object를 만들 수 있습니다.
import ObjectMapper

class User: Mappable {
    var id: Int = 0
    var familyName: String = ""
    var givenName: String = ""

    required init?(map: Map) { }

    func mapping(map: Map) {
        id <- map["id"]
        familyName <- map["family_name"]
        givenName <- map["given_name"]
    }
}

extension User {
    public var fullName: String {
        return familyName + " " + givenName
    }
}
이 반의 테스트를 쓸 때 JSON 파일에서 User의 데이터를 읽어서 테스트를 진행합니다.

JSON 파일 준비


User.json이라는 파일 이름으로 JSON을 만듭니다.
{
    "id": 1,
    "family_name": "苗字",
    "given_name": "名前"
}

JSON 읽기 방법


먼저 User입니다.json 파일을 읽습니다.
let url = Bundle(for: type(of: self)).url(forResource: "User", withExtension: "json")!
let json = try? String(contentsOf: url)
그리고 그 json을 Mapper로 읽을 수 있습니다.
let mapper = Mapper<User>()
user = mapper.map(JSONString: json!)

실제 테스트 파일


여기에는 Quick + Nimble로 테스트를 씁니다.
준비된 User를 사용하여 테스트를 작성합니다.
초기화가 끝났기 때문에 User의 동작만 테스트합니다.
import Foundation
import Quick
import Nimble
import ObjectMapper

class UserSpec: QuickSpec {
    override func spec() {
        var user: User!
        let mapper = Mapper<User>()

        beforeEach {
            let url = Bundle(for: type(of: self)).url(forResource: "User", withExtension: "json")!
            let json = try? String(contentsOf: url)
            user = mapper.map(JSONString: json!)
        }

        describe("mapping") {
            it("JSON のパラメータがマッピング出来ていること") {
                expect(user.id).to(equal(1))
                expect(user.familyName).to(equal("苗字"))
                expect(user.givenName).to(equal("名前"))
            }
        }

        describe("fullName") {
            it("全角スペース区切りのフルネームを取得すること") {
                expect(user.fullName).to(equal("苗字 名前"))
            }
        }
    }
}

끝맺다


ObjectMapper를 이용하면 Enity 테스트를 쓸 수 있습니다.
깊이 박힌 Object도 JSON을 준비할 수 있기 때문에 테스트가 간단합니다
Swift4에 Codable가 나오기 때문에 ObjectMapper가 필요하지 않고 Swift4를 급히 기다립니다.

좋은 웹페이지 즐겨찾기