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.
Guava provides several types of test doubles:
- Stub
- Spy
- Fake
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)
}
}
See Documentation section.
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")
],
...
)