Jest中フック関数
2945 ワード
まず、クラスを書き、ファイルcounterに入れます.jsでは、コードは以下の通りです.
次に、このクラスをテストするテストファイルを書きます.以下のとおりです.
以上、2つのテスト例間のデータは関連付けられており、これはあまりよくありません.
Jestはフック関数を提供してくれて、このような問題を処理するときに使用することができます.
これらのフック関数、例えばbeforeAll、afterAll、beforeEach...
公式サイト紹介https://jestjs.io/docs/en/api#beforeallfn-timeout
ここではbeforeEachを使えばいいです.
また、以下のようにテスト例をグループ化することもできます.
実は上のコードは、下に等価です.
では、beforeEachのフックはdescribeに属していることがわかりやすく、サブのdescribeにもフックを追加することができ、その有効範囲はその下のすべてのテスト例である.
class Counter {
constructor () {
this.number = 0
}
addOne () {
this.number += 1
}
minusOne () {
this.number -= 1
}
}
export default Counter
次に、このクラスをテストするテストファイルを書きます.以下のとおりです.
import Counter from './counter.js'
const counter = new Counter()
test(' Counter addOne ', () => {
counter.addOne()
expect(counter.number).toBe(1)
})
test(' Counter minusOne ', () => {
counter.minusOne()
expect(counter.number).toBe(0)
})
以上、2つのテスト例間のデータは関連付けられており、これはあまりよくありません.
Jestはフック関数を提供してくれて、このような問題を処理するときに使用することができます.
これらのフック関数、例えばbeforeAll、afterAll、beforeEach...
公式サイト紹介https://jestjs.io/docs/en/api#beforeallfn-timeout
ここではbeforeEachを使えばいいです.
import Counter from './counter.js'
let counter = null
beforeEach(() => {
counter = new Counter()
})
test(' Counter addOne ', () => {
counter.addOne()
expect(counter.number).toBe(1)
})
test(' Counter minusOne ', () => {
counter.minusOne()
expect(counter.number).toBe(-1)
})
また、以下のようにテスト例をグループ化することもできます.
import Counter from './counter.js'
let counter = null
beforeEach(() => {
counter = new Counter()
})
describe(' ', () => {
test(' Counter addOne ', () => {
counter.addOne()
expect(counter.number).toBe(1)
})
test(' Counter addOne ', () => {
counter.addOne()
expect(counter.number).toBe(1)
})
})
describe(' ', () => {
test(' Counter minusOne ', () => {
counter.minusOne()
expect(counter.number).toBe(-1)
})
test(' Counter minusOne ', () => {
counter.minusOne()
expect(counter.number).toBe(-1)
})
})
実は上のコードは、下に等価です.
import Counter from './counter.js'
describe(' Counter', () => {
let counter = null
beforeEach(() => {
counter = new Counter()
})
describe(' ', () => {
test(' Counter addOne ', () => {
counter.addOne()
expect(counter.number).toBe(1)
})
test(' Counter addOne ', () => {
counter.addOne()
expect(counter.number).toBe(1)
})
})
describe(' ', () => {
test(' Counter minusOne ', () => {
counter.minusOne()
expect(counter.number).toBe(-1)
})
test(' Counter minusOne ', () => {
counter.minusOne()
expect(counter.number).toBe(-1)
})
})
})
では、beforeEachのフックはdescribeに属していることがわかりやすく、サブのdescribeにもフックを追加することができ、その有効範囲はその下のすべてのテスト例である.