Skip to content

swift-http-types

Latest
Compare
Choose a tag to compare
@henrik-dmg henrik-dmg released this 12 Apr 07:06
· 12 commits to main since this release
4.0.0
6e1266a

Overview

This release migrates a lot of the types to use the swift-http-types package by Apple. It brings breaking changes, so new major version.

Mocking

There's a new NetworkClientProtocol type that you can schedule network requests on. To mock network requests, you can use NetworkClientMock from the new HPNetworkMock library.

Example usage:

networkClient.mockRequest(ofType: SomeRequest.self) { _ in
    ReturnTypeOfRequest() // or throw an error
}

// To remove all mocks

networkClient.removeAllMocks()

You can also specify whether NetworkClientMock should just fall-back to regular networking if there are no mocks configured for the request it's about the execute by using fallbackToURLSessionIfNoMatchingMock

If you need to go deeper, for example if you don't want to migrate to NetworkClient, you can use URLSessionMock to use with URLSession

Example usage of URLSessionMock:

lazy var mockedURLSession: URLSession = {
    let configuration = URLSessionConfiguration.ephemeral
    configuration.protocolClasses = [URLSessionMock.self]
    return URLSession(configuration: configuration)
}()

// ...

_ = URLSessionMock.mockRequest(to: url, ignoresQuery: false) { _ in
    let response = HTTPURLResponse(
        url: url,
        statusCode: 200,
        httpVersion: nil,
        headerFields: ["Content-Type": ContentType.applicationJSON.rawValue]
    )!
    return (someDataYouWant, response)
}

Full Changelog: 3.1.2...4.0.0