jest spy를 사용한 테스트에서 테스트 순서에 따라 떨어지거나 떨어지지 않는 문제 해결
5471 단어 자바스크립트TypeScriptJest
테스트 대상은 TypeScript 의 함수입니다만, 형태가 있는 것을 제외하고는 JavaScript 로 읽어도 동일하다고 생각합니다.
테스트할 함수가 다음과 같다고 가정합니다.
export const targetFunction = (flag: boolean) => {
if (flag) {
console.error('出力です')
}
}
실패한 패턴 테스트
import { targetFunction } from '~/plugins/axios'
const spyConsoleError = jest.spyOn(console, 'error')
spyConsoleError.mockImplementation(() => {
})
describe('spy resetの動作テスト', () => {
test('console error が呼ばれる', async () => {
await targetFunction(true)
expect(console.error).toBeCalled()
})
test('console error が呼ばれないはず', async () => {
await targetFunction(false)
expect(console.error).not.toBeCalled()
})
})
이것을 실행하면
대상 테스트 중에서는 console.error는 호출되지 않았지만 이미 이전 테스트에서 호출되었으므로 한 번 호출되었습니다.
잘 작동하도록 다시 작성된 패턴
import { targetFunction } from '~/plugins/axios'
const spyConsoleError = jest.spyOn(console, 'error')
spyConsoleError.mockImplementation(() => {
})
// ------ これを書き足します --------
beforeEach(() => {
spyConsoleError.mockReset()
})
// ------ ここまで ---------
describe('spy resetの動作テスト', () => {
// 同じテスト
})
각각의 테스트 전에 beforeEach 로 초기화 처리를 해 주면 종속성의 문제가 일어나지 않습니다.
Reference
이 문제에 관하여(jest spy를 사용한 테스트에서 테스트 순서에 따라 떨어지거나 떨어지지 않는 문제 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yamotuki/items/9c2fb34c61672b216952텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)