All Projects → bannzai → XChanger

bannzai / XChanger

Licence: MIT License
XChanger can exchange to behavior for URL request and response

Programming Languages

swift
15916 projects
ruby
36898 projects - #4 most used programming language
Makefile
30231 projects

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: Codable {
  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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].