β€οΈ Support my app β€οΈ
β€οΈβ€οΈπππ€β€οΈβ€οΈ
Spek is a lightweight function builder style Behavior Driven Development framework, designed to be used with XCTest
β οΈBefore using any test frameworks, you need to ensure there is XCTest
framework in your test target.
import XCTest
@testable import Spek
final class SpekTests: XCTestCase {
func testExample() {
var left = 1
var right = 1
spec {
Describe("math") {
BeforeEach {
left = 2
}
Describe("basic") {
BeforeEach {
right = 3
}
AfterEach {
}
It("adds correctly") {
XCTAssertEqual(left + right, 5)
}
It("multiplies correctly") {
XCTAssertEqual(left * right, 6)
}
}
}
}
}
}
X
, for example XDescribe
, XIt
, ...do try catch
BeforeAll
and AfterAll
are run before and after all enclosing Describe
and It
BeforeEach
and AfterEach
are run before and after all enclosing It
Context
behaves the same as Describe
When you have an imcomplete block, instead of commenting it out, you can prefix it with X
so it won't be executed
Describe("math") {
It("will be run") {
}
XIt("won't be run") {
}
}
Spek uses Swift 5.1 function builder so you can only declare block and nested block. To declare local variables in a subspec, you need to use Sub
and return Describe
explicitly
Describe("math") {
Describe("advanced") {
}
Sub {
let abc = 1
let def = 2
return Describe("extra") {
It("should add") {
XCTAssertEqual(abc + def, 2)
}
}
}
}
By default, spec
method runs the test directly, to generate test cases, you need to override makeDescribe
.
Subclass SpekTestCase
and override makeDescribe
method, Spek will convert your Describe
descriptions and generate XCTestCase
methods. It generates test methods for nested Describe
and Sub
too.
For example the below test will generate test_math_should_work
and test_math_advanced_should_calculate
methods
import XCTest
import Spek
class GenerateTestCaseTests: SpekTestCase {
override class func describe() -> Describe {
Describe("math") {
It("should work") {
XCTAssertTrue(1 + 1 == 2)
}
Describe("advanced") {
It("should calculate") {
XCTAssertEqual(2 * 5, 10)
}
}
}
}
}
Spek is distributed using the Swift Package Manager. To install it into a project, add it as a dependency within your Package.swift manifest:
let package = Package(
...
dependencies: [
.package(url: "https://github.com/onmyway133/Spek.git", from: "0.5.0")
],
...
)
Then import Spek in your XCTest
import Spek
Khoa Pham, [email protected]
Spek is available under the MIT license. See the LICENSE file for more info.
link |
Stars: 122 |
Last commit: 4 years ago |
Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics