XChanger
XChange makes us enable to do mocking response with URL easily.
Usage
Before start to register mocks, you need to call just one sentence, XChanger.register(), in some starting points like @main, AppDelegate, SceneDelegate or head of method in your unit test cases.
XChanger.register()Then, passing response mock data with URL request as a key.
Here is the example for the URL https://exmaple.com/v1/users/10, and will return the 200 response with the body {"id": 10, name:"bannzai"}.
struct User {
var id: Int
var name: String
}
let url = "https://exmaple.com/v1/users/10"
let json = try! JSONEncoder().encode(User(id: 10, name: "bannzai"))
XChanger.exchange().request(url: url).response(data: json, statusCode: 200).enable()Finally, you can send URLRequest normaly, and you can see the response is what you defined.
let request = URLRequest(url: URL(string: "https://exmaple.com/v1/users/10")!)
let session = URLSession(configuration: URLSessionConfiguration.default)
session.dataTask(with: request) { data, response, error in
guard let httpResponse = response as? HTTPURLResponse else {
return fatalError("Unexpected response type of HTTPURLResponse")
}
print(httpResponse.statusCode) // 200
let decoded = try! JSONDecoder().decode(User.self, from: data!)
print(decoded) // User(id: 10, name: "bannzai")
}.resume()Installing
Cocoapods
pod 'XChanger', configuration: %w(Debug)Swift Package Manager
Xcode
Open File > Swift Packages > Add Package Dependency... and put Repository URL https://github.com/bannzai/XChanger. This document will also help you.
Use as dependency
Add the following to your Package.swift file's dependencies:
.package(url: "https://github.com/bannzai/XChanger.git", from: "0.0.1")
LICENSE
XChanger is released under the MIT license. See LICENSE for details.