XChanger 1.0.1

XChanger 1.0.1

Maintained by Yudai.hirose.

XChanger 1.0.1

  • By
  • bannzai


XChange makes us enable to do mocking response with URL easily.


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.


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")



pod 'XChanger', configuration: %w(Debug)

Swift Package Manager


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")


XChanger is released under the MIT license. See LICENSE for details.