Stubbles

Build Documentation

Stubbles is a declarative HTTP stubbing library written in Swift, with support for iOS, tvOS and macOS.

Installation

CodeKit is available via the Swift Package Manager which is a tool for managing the distribution of Swift code. It’s integrated with the Swift build system and automates the process of downloading, compiling, and linking dependencies.

Once you have your Swift package set up, adding Stubbles as a dependency is as easy as adding it to the dependencies value of your Package.swift.

dependencies: [
    .package(
        url: "https://github.com/aplr/Stubbles.git",
        .upToNextMajor(from: "0.0.1")
    )
]

Usage

class ApiTest: XCTestCase {
    override func setUp() {
        Stubbles.shared.start()
        super.setUp()
    }

    override func tearDown() {
        Stubbles.shared.stop()
        super.tearDown()
    }
    
    func testGetTodo() async throws {
        // Arrange
        let todoApi = TodoApi()
        
        let expectedTodo = Todo(id: 1, userId: 1, title: "todo", completed: false)
        
        let stub = Stubbles.shared.stub {
            Endpoint("https://jsonplaceholder.typicode.com/todos/1")
            StubResponse {
                StatusCode(201)
                JsonBody(expectedTodo)
            }
        }
        
        // Act
        let actualTodo = try await todoApi.getTodo(id: 1)
        
        // Assert
        XCTAssertEqual(expectedTodo, actualTodo)
        XCTAssertEqual(stub.calls.count, 1, "Expected request to be sent exactly once.")
    }
}

Documentation

Documentation is available here and provides a comprehensive documentation of the library’s public interface.

License

Stubbles is licensed under the MIT License.

GitHub

View Github