Jest의 비동기 테스트를 이해하려고합니다.Jest와 setTimeout을 사용하여 약속 테스트
내 모듈에는 부울을 허용하고 값의 약속을 반환하는 함수가 있습니다. executer 함수는 setTimeout
을 호출하고 시간 제한 콜백에서 처음에 제공된 부울에 따라 약속이 해결되거나 거부됩니다. 코드는 다음과 같습니다.
const withPromises = (passes) => new Promise((resolve, reject) => {
const act =() => {
console.log(`in the timout callback, passed ${passes}`)
if(passes) resolve('something')
else reject(new Error('nothing'))
}
console.log('in the promise definition')
setTimeout(act, 50)
})
export default { withPromises }
Jest를 사용하여 테스트하고 싶습니다. 내 테스트 스크립트는이 같은 비트 보이는, 그래서 내가 농담이 제공하는 모의 타이머를 사용할 필요가 추측 :
import { withPromises } from './request_something'
jest.useFakeTimers()
describe('using a promise and mock timers',() => {
afterAll(() => {
jest.runAllTimers()
})
test('gets a value, if conditions favor',() => {
expect.assertions(1)
return withPromises(true)
.then(resolved => {
expect(resolved).toBe('something')
})
})
})
을 나는 다음과 같은 오류/실패 테스트, I 전화 여부를 jest.runAllTimers()
Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
수
내가 잘못하고있는 부분과 약속이 해결되는 테스트를 통과하기 위해해야 할 일을 설명해 주시겠습니까?
이 작품! 설명과 설명 및 코드 샘플을 보내 주셔서 감사합니다. –