비동기 자바 스크립트 함수를 작성했지만 기대했던 리턴 값을 얻지 못하는 것 같습니다. 비동기 함수가 작동하는 방식을 오해하고 있는지 또는 내 테스트가 올바르지 않은지 누군가가 설명 할 수 있습니까?비동기 비동기 테스트 JavaScript 함수 기다림
다음은 Nock을 사용하여 서비스를 조롱 한 나의 테스트입니다.
it('Should call async validation function when button is clicked',() => {
const request = nock(/.*/)
.get('/my-service/logincodes/abc123')
.reply(404);
const comp = mount(
<LoginCodeView />
);
expect(comp.instance().doesLoginCodeExist('abc123')).to.equal('Your Login code is not recognized.');
});
그리고 테스트중인 기능 : 나는 코드가 소요가 예상대로 다른 경우 지점으로 갈 것으로 보인다 않는 경로 로그 아웃 한
doesLoginCodeExist = async (loginCode) => {
if (loginCode.match(loginPattern)) {
const response = await MyService.getUserByLoginCode(loginCode);
if (response.code) {
return {};
} else if (response.status === 404) {
return { error: 'Your login code is not recognized.', success: null };
}
return { error: 'Service is temporarily unavailable.', success: null };
}
return null;
};
그러나 나는 항상 얻을 빈 객체 {}가 반환되었지만 예상대로 오류 및 성공 속성이있는 객체가 아닙니다.
'async' 함수는 항상'Promise' 객체를 반환합니다. 나는 이것이 당신이 비어있는 물건을 부르는 것이라고 의심합니다. 테스트 함수 async를 만들고 거기에'await'을 사용해보십시오. –
감사합니다 @ AlexanderO'Mara가 내 테스트 비동기 작업을 기다리고 있습니다. – deanmau5