json에서 ObjectMapper를 쓰는 클래스 테스트를 읽습니다.
10096 단어 SwiftQuickObjectMapperiOS
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를 급히 기다립니다.
Reference
이 문제에 관하여(json에서 ObjectMapper를 쓰는 클래스 테스트를 읽습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/star__hoshi/items/f6a3def4bddafd21a1d7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)