パッケージ導入
swift
"Quick/Quick"
"Quick/Nimble"
テストコードを書く
swift
import Quick
import Nimble
@testable import <プロジェクト名>
class LoginSpec: QuickSpec {
override func spec() {
describe("ログインする") {
beforeSuite {
// 全てのテストが始まる前に実行する処理
}
beforeEach {
// itが始まる前に毎回実行する処理
}
afterEach {
// itが終わった後に毎回実行する処理
}
afterSuite {
// 全てのテストが終わった後に実行する処理
}
context("ログインが成功した場合") {
it("正常系") {
expect(<処理等>).to(equal(<比較したい値>))
}
}
context("ログインが失敗した場合") {
it("異常系") {
expect(<処理等>).to(equal(<比較したい値>))
}
}
}
}
}
QuickSpec
Quickの基本形でクラスは、QuickSpecを継承してspec()メソッドの中にテストケースを記載できる
beforeSuite、beforeEach、afterEach、afterSuite
・beforeSuite
全てのテストが始まる前に行う
・beforeEach
itが始まる前に行う
・afterEach
itの後に行う
・afterSuite
全てのテストが終わった時に行う
describe、context、it
・describe
何のテストを行うか
・context
どの条件でテストを行うか
・it
結果はどうなるのか z
expect
評価対象の評価にはequal()以外にも幾つかある
swift
// AAA が BBB であること
expect(AAA).to(equal(BBB))
// AAA が BBB でないこと
expect(AAA).toNot(equal(BBB))
// AAA が True であること
expect(AAA).to(beTrue())
// AAA が True ではないこと
expect(AAA).toNot(beTrue())
または
expect(AAA).notTo(beTrue())
// AAA が非同期でTrue になること(デフォルトでは1秒待ちます)
expect(AAA).toEventually(beTrue())
// AAA が非同期でTrue 以外になること
expect(AAA).toEventuallyNot(beTrue())
または
expect(AAA).toNotEventually(beTrue())
// AAA が1以上であること
expect(AAA).to(beGreaterThanOrEqualTo(1))
// AAA が Hoge クラスのインスタンスであること
expect(AAA).to(beAnInstanceOf(Hoge.self))
// AAA が Hoge クラスもしくはその子クラスのインスタンスであること
expect(AAA).to(beAKindOf(Hoge.self))
// AAA が1.0のプラスマイナス0.2の範囲内の値であること
expect(AAA).to(beCloseTo(1.0, within: 0.2))