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.
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 installCarthage
on your system
You could manually build Guava for iOS and MacOS by using:
make release_tooling
make carthage_build