2017-05-04 2 views
0

내 응용 프로그램에 대한 Jest/Flow 설정이 작동했습니다. 우리는 TypeScript로 전환했고 모든 테스트가 중단되었습니다. 나는 모든 것을 .ts와 .test.ts로 바꾸고 모든 버그를 고쳤다. 어떤 이유로 든 내 __mocks__은 더 이상 사용되지 않습니다. (나는 automock에 실패한 모듈을 모의해야만했다.)jest typescript는 node_modules에 대해 __mocks__을 사용하지 않습니다.

예를 들어, 아래의 코드는 필요시 언제든지 전자 모조를 사용하여 오류가보고 된 오류를 확인할 수 있도록 코드가 조롱 된 대화 상자를 호출하도록 허용했다. . 내가 TypeScript로 변환했기 때문에 require ("electron")이 테스트에서 명중 될 때마다 remote가 정의되지 않았다고 말하는 것이 실패합니다.

예) aFile.test.ts

import reportError from "../aFile.ts"; 
const { dialog } = require ("electron").remote; 

describe ("reportError",() => 
{ 
    test ("creates dialog",() => 
    { 
     const title = "foo"; 
     const message = "bar"; 
     reportError (title, message); 

     expect (dialog.showErrorBox).toHaveBeenLastCalledWith (title, message); 
    }); 
}); 

예) aFile.ts

const { dialog } = require ("electron").remote; 
export default function reportError (title: string, message: string) 
{ 
    dialog.showErrorBox (title, message); 
} 

예) node_modules의 __mocks__/electron.js (형제)

module.exports = { remote: { dialog: { showErrorBox: jest.fn() } } }; 내가 확실히 알고

모의은 아니다 사용중인, becau

jest.mock ("electron",() => { return { remote: { dialog: { showErrorBox: jest.fn() } } } });

__mocks__을 찾는 타이프 라이터되지 않습니다 내가 어떤 실패 .test.ts 파일에 다음을 추가 할 때 자체, 그것은 통과하기 시작? mocks.js을 만들

:

가 package.json에
jest.mock ("electron",() => 
    { 
    return { remote: { dialog: { showErrorBox: jest.fn() } } }; 
    }); 

는 농담 섹션이 추가 (당신의 mocks.js가 어디 있는지 경로) :

+0

필자는'require ('electron')'가 jest 파서에서 가려져 있고 jest가 가져 오기를 들었을 때 감지되지 않는다고 생각합니다. 이것은 아마도 농담의 근원지에 대한 깊은 잠수가 필요할 것입니다. –

+0

동일한 문제가 있습니다. ( – Jonathan

+0

내일 해결할 수 있습니다. – austinrulezd00d

답변

1

나는이 문제를 해결하려면 다음 해결 방법을 사용
"jest": 
{ 
    "setupFiles": [ "<rootDir>/../mocks.js" ] 
}, 

이것은 전체적으로 전자 및 여기에 선언 한 다른 모듈을 모의 할 것이며 __mocks__ 폴더와 유사합니다. 각 모듈을 자체 파일에 넣고 setupFiles 배열에 추가 할 수 있습니다.