다음은 jest@24.8.0 및 ts-jest@24.0.2로 수행 한 작업입니다 .
출처:
class OAuth {
static isLogIn() {
}
static getOAuthService() {
}
}
테스트:
import { OAuth } from '../src/to/the/OAuth'
jest.mock('../src/utils/OAuth', () => ({
OAuth: class {
public static getOAuthService() {
return {
getAuthorizationUrl() {
return '';
}
};
}
}
}));
describe('createMeeting', () => {
test('should call conferenceLoginBuild when not login', () => {
OAuth.isLogIn = jest.fn().mockImplementationOnce(() => {
return false;
});
});
});
이것은 기본이 아닌 클래스를 모의하는 방법이며 정적 메서드입니다.
jest.mock('../src/to/the/OAuth', () => ({
OAuth: class {
public static getOAuthService() {
return {
getAuthorizationUrl() {
return '';
}
};
}
}
}));
여기에 클래스 유형에서 jest.MockedClass
이와 비슷한 유형으로 변환해야합니다 . 그러나 그것은 항상 오류로 끝납니다. 그래서 직접 사용했고 효과가있었습니다.
test('Some test', () => {
OAuth.isLogIn = jest.fn().mockImplementationOnce(() => {
return false;
});
});
하지만 함수라면 조롱하고 타입 대화를 할 수 있습니다.
jest.mock('../src/to/the/Conference', () => ({
conferenceSuccessDataBuild: jest.fn(),
conferenceLoginBuild: jest.fn()
}));
const mockedConferenceLoginBuild = conferenceLoginBuild as
jest.MockedFunction<
typeof conferenceLoginBuild
>;
const mockedConferenceSuccessDataBuild = conferenceSuccessDataBuild as
jest.MockedFunction<
typeof conferenceSuccessDataBuild
>;