JavaScript Action sing Type Script 테스트에 대한 Tips를 쓰기 위해 Giithub API 호출
9211 단어 TypeScriptGitHub ActionsJesttech
테스트 대상 코드
import * as github from "@actions/github";
export async function listPulls(){
const octokit = github.getOctokit(token);
return octokit.rest.pulls
.list({
owner: owner,
repo: repo,
})
}
@actions/github
에서 Rest API를 호출하는 부분을 모듈화하려고 합니다.조사한 느낌octokit/fixtures도 쓸 수 있을지 모르지만, 코트처럼 보이기 때문에 써볼까jest해보자.
모듈식 테스트 코드
const setup = (list: jest.Mock) => {
const getOctokit = jest.fn().mockImplementation(() => {
const { GitHub } = jest.requireActual("@actions/github/lib/utils");
return {
...GitHub,
rest: {
pulls: { list: list },
},
};
});
jest.spyOn(github, "getOctokit").mockImplementation(getOctokit);
return [getOctokit];
};
getOctokit
spyOn
로 모듈화.const { GitHub } = jest.requireActual("@actions/github/lib/utils");
GitHub
를 주지 않으면 tsc에서 컴파일 오류가 토출되어 시험 오류가 발생합니다.모듈의 테스트 코드 사용
const list = jest.fn().mockImplementation(() =>
Promise.resolve({
data: [],
})
);
const [getOctokit] = setup(list);
정상적인 시스템의 응답을 테스트한 상황에서 되돌아오기Promise.resolve
의 실현을 제공한다. const list = jest
.fn()
.mockImplementation(() => Promise.reject(new Error("failed")));
const [getOctokit] = setup(list);
이상 시스템의 응답을 테스트한 상황에서 되돌아오기Promise.reject
의 실현을 제공한다.신경 쓰이는 일
Promise.resolve
반환 형식이 적당하기 때문에 실행할 때 오류가 발생할 수 있습니다.하지만 형식적으로 제한이 너무 많아도 테스트를 쓰는 것도 귀찮을 것 같아서 어쩔 수 없어요.
Reference
이 문제에 관하여(JavaScript Action sing Type Script 테스트에 대한 Tips를 쓰기 위해 Giithub API 호출), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/nokamoto/articles/ts-github-actions-jest텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)