Skip to content

XChanger can exchange to behavior for URL request and response

License

Notifications You must be signed in to change notification settings

bannzai/XChanger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

82 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

XChanger can exchange to behavior for URL request and response

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •