整理TIL|Jest用語
22942 ワード
整理しようとするコード鞍馬-済斯特課程講義内容.
概要
規模の大きいプロジェクトでは、1つずつテストする時間はありません.そのため、自動化されたテストツールを使用してテストを行います.デフォルトでは、ファイル名にtest、またはテスト/457914とフォルダがありますが、特定のファイルのみをテストしたい場合は、最後にファイル名が追加されます.## 특정 파일 확인
yarn test 파일이름
きほんけいじょう
出典:紹介、インストールと簡単なテストコードANSA-Jest課程1
出典:Anma-Jestレッスン2をエンコードするのに役立つMatcherstest('코드 설명', () => {
expect(검증할 값).toBe(기대되는 값)
})
Matcher
## 특정 파일 확인
yarn test 파일이름
出典:紹介、インストールと簡単なテストコードANSA-Jest課程1
出典:Anma-Jestレッスン2をエンコードするのに役立つMatchers
test('코드 설명', () => {
expect(검증할 값).toBe(기대되는 값)
})
Matcher
__tests__
:原型検査時使用toBe
・toEqual
:参照タイプチェック時に使用null、undefined、boolean判別
toStrictEqual
toBeNull
toBeUndefined
toBeDefined
toBeTruthy
test('null은 null이야', () => {
expect(null).toBeNull()
})
大きいです。小さいです。大きいか等しいか。以下
toBeFalsy
:大toBeGreaterThan
:大きいか等しいtoBeGreaterThanOrEqual
:小toBeLessThan
:以下数値テストの注意事項
JS中
toBeLessThanOrEqual
JSはメモリに64ビットの浮動小数点形式で数字を格納します.メモリにはバイナリが格納されているので、10進数をバイナリに変換します.この過程で、無限小数に変換され、64ビットを超える部分を切除します.よって、結果値は0.1 + 0.2 !== 0.3
Jestでは,この問題を解決するために近似値比較の0.30000000000000004
関数を用いることができる.test('0.1 더하기 0.2는 0.3이야.', () => {
expect(fn.add(0.1, 0.2)).toBeCloseTo(0.3) // pass
})
正規表現の使用
toBeCloseTo
test('Hello World에는 w가 있어.', () => {
expect('Hello World').toMatch(/w/i) // pass
})
配列内の要素の検索
toMatch(정규표현식)
test('userList에 test가 있어?', () => {
const userList = ['Tom', 'Jane', 'Kai']
expect(userList).toContain('test') // failed
})
エラーチェック
toContain()
:エラーが発生した場合、passtoThrow()
:特定エラー確認test('에러 발생 확인', () => {
expect(() => fn.getThrowError()).toThrow('error')
})
非同期検出
出典:テストコードANSA-Jestチュートリアル#3非同期コード
コールバックモード
エンジンがコードの下部に達すると、実行は直接終了し、非同期コードは実行されません.
このためtest(「説明」callback)では、callback関数パラメータで特定キーワードを入れ(
toThrow(에러 이름)
)、エンジンが特定キーワードに到達したときに終了するように設定します.const fn3 = {
getName: (callback) => { // callback을 인자로 받고 3초 후 콜백함수를 실행함
const name = 'Kim'
setTimeout(() => {
callback(name)
}, 3000)
}
}
// fn.test.js
test('3초 후 Kim이라는 이름을 출력', (done) => {
function callback(name) {
expect(name).toBe('Kim')
done() // 비동기 함수가 실행되고 done까지 만났을 때 비로소 종료
}
fn.getName(callback)
})
保証する
Jestは、プロセスの解析または拒否を待つため、特定のキーワードの作成を終了する必要はありません.代わりに、プロミスに戻る関数の前に
e.g, done
const fn3 = {
getPuppy: () => {
const puppy = 'pup'
return new Promise((res, rej) => {
setTimeout(() => {
res(puppy) // 프로미스 return
}, 2000)
})
}
}
fn.test.js
test('2초 후 puppy "pup"을 출력', () => {
return fn3.getPuppy().then((puppy) => {
expect(puppy).toBe('pup')
})
})
promisモードを使用することができますが、コールバックモードがあります.この場合、return
またはresolves
切寧により機能する.test('2초 후 puppy "pup"을 출력', () => {
return expect(fn3.getPuppy()).resolves.toBe('pup')
})
asnyc, await
async,awaitもpromisを使用するので,上部getPuppyメソッドを使用する.
test('2초 후 puppy "pup"을 출력 with asnyc, await', async () => {
const puppy = await fn3.getPuppy()
expect(puppy).toBe('pup')
})
テスト前処理関連関数
出典:コード鞍馬-Jest課程#4テスト前後タスク
rejects
:試験関数毎に実行する前に実行する関数beforeEach
:試験関数毎に実行される関数afterEach
:すべての関数が実行されるまで1回しか実行されない関数beforeAll
:全関数実行後1回のみ実行する関数describe("User 관련 작업", () => { // 관련작업을 한 데 묶을 수 있다.
let user = {}
beforeAll(async () => {
// 작업 전 user Db 가져오기
user = await fn3.connectUserDb()
})
afterAll(async () => {
return fn3.disonnectUserDb()
})
test('이름은 Kim', () => {
expect(user.name).toBe('Kim')
})
})
afterAll
:特定テストのみ検証test.only(설명, () => {})
:特定テストのみスキップMock関数
出典:エンコードANSA-Jestレッスン#5木関数(Mock Functions)
jest.fn().mock
const mockFunc = jest.fn() // mock 함수 만들기
mockFunc.mock.calls // 함수의 호출 횟수, 호출된 인자값 확인 가능, [[인자], [인자, 인자], [인자]]
mockFunc.mock.results // 리턴된 값 확인, [{ type: 'return', value: 어쩌구 }]
test.skip(설명, () => {})
:mock関数の戻り値を設定mockReturnValueOnce
:mock関数の最後の要素の戻り値を設定mockFunc.
.mockReturnValueOnce(바꿀 값)
.mockReturnValueOnce(바꿀 값)
.mockReturnValue(바꿀 값)
mockReturnValue
:非同期関数の模倣jest.mock(関数ソース)
呼び出しのたびにdbなどに実際に影響する関数があると仮定する.テストを行うために、関数を直接呼び出してdbに接続し、返すのは面倒です.その際に使用する
mockResolvedValue
jest.mock()
読み込んだ関数をmockingモジュールとし、実際に関数を呼び出すことはありません.const func = require('./fn')
jest.mock('./fn') // mock module로 만듦
func.createUser.mockReturnValue({ name: 'Kim' }) // 함수의 리턴값을 변경
test('user 생성', () => {
const user = fn.createUser('Kim')
expect(user.name).toBe('Kim')
})
mock関数の呼び出しリカバリ、パラメータチェック
jest.mock()
:一度以上呼んだことがあるかチェックtoBeCalled()
:正しいコール回数をチェックtoBeCalledTimes(횟수)
:検査買付toBeCalledWith(인수...)
:最後に実行した関数の因数のみチェックReference
この問題について(整理TIL|Jest用語), 我々は、より多くの情報をここで見つけました https://velog.io/@jeongs/TIL-Jest-용어-정리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol