GithubHelp home page GithubHelp logo

merindorium / guava Goto Github PK

View Code? Open in Web Editor NEW
10.0 4.0 1.0 77 KB

A Swift test double library. Guava - looks like an apple but it's not.

License: MIT License

Swift 99.35% Makefile 0.65%
swift unit-testing test-doubles library spy fake stub

guava's Introduction

Guava

Guava helps you to make your unit tests more flexible. It allows you to replace parts of your system under test with a test double objects.


build Swift 5.x platform version Carthage compatible

Table of Contents

Features

Guava provides several types of test doubles:

  • Stub
  • Spy
  • Fake

Usage

import Guava
import XCTest

protocol Calculator {

    func multiply(_ lhs: Int, _ rhs: Int) -> Int
}

final class CalculatorTestDouble: Calculator {

    let multiplyMethod = TestDoubleFactory<Int>()

    func multiply(_ lhs: Int, _ rhs: Int) -> Int {
        return multiplyMethod.invoke(arguments: [lhs, rhs])
    }
}

final class CalculatorTestCase: XCTestCase {

    func testMultiply() {
        let stubValue = 5
        let calculatorTestDouble = CalculatorTestDouble()

        calculatorTestDouble.multiplyMethod.stub(stubValue)

        let result = calculatorTestDouble.multiply(3, 3)
        XCTAssertEqual(result, stubValue)
    }
}

Documentation

See Documentation section.

Installation

Carthage

Update your Cartfile with:

github "merindorium/Guava"

Swift Package Manager

To use Guava with SPM update your Package.swift.

import PackageDescription

let package = Package(
    name: "ExampleProject",
    dependencies: [
        .package(url: "https://github.com/merindorium/Guava.git", from: "v1.2.0")
    ],
    ...
)

Manual

โš ๏ธ This will install Carthage on your system

You could manually build Guava for iOS and MacOS by using:

  1. make release_tooling
  2. make carthage_build

guava's People

Contributors

merindorium avatar terky avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

terky

guava's Issues

Swift 6 Error

When I run Test using Swift 6 mode. I get an error Sending 'self'-isolated value of type 'UInt64' with later accesses to actor-isolated context risks causing data races. Looks like the .zero being set todelayInNanoseconds argument is the culprit.

Note: Settings the value to 0 fixes the issues.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.