이것이 불가능하다고 생각하기 시작했지만 어쨌든 묻고 싶습니다.
ES6 모듈 중 하나가 특정 방식으로 다른 ES6 모듈을 호출하는지 테스트하고 싶습니다. Jasmine을 사용하면 매우 쉽습니다.
앱 코드 :
// myModule.js
import dependency from './dependency';
export default (x) => {
dependency.doSomething(x * 2);
}
그리고 테스트 코드 :
//myModule-test.js
import myModule from '../myModule';
import dependency from '../dependency';
describe('myModule', () => {
it('calls the dependency with double the input', () => {
spyOn(dependency, 'doSomething');
myModule(2);
expect(dependency.doSomething).toHaveBeenCalledWith(4);
});
});
Jest와 동등한 것은 무엇입니까? 나는 이것이 그렇게하고 싶은 단순한 일이라고 생각하지만, 그것을 알아 내려고 노력하면서 머리카락을 찢어 버렸습니다.
내가 가장 가까운 것은 import
s를 require
s 로 바꾸고 테스트 / 함수 내부로 옮기는 것입니다. 어느 쪽도 내가하고 싶은 일이 아닙니다.
// myModule.js
export default (x) => {
const dependency = require('./dependency'); // yuck
dependency.doSomething(x * 2);
}
//myModule-test.js
describe('myModule', () => {
it('calls the dependency with double the input', () => {
jest.mock('../dependency');
myModule(2);
const dependency = require('../dependency'); // also yuck
expect(dependency.doSomething).toBeCalledWith(4);
});
});
보너스 포인트의 경우 내부 함수 dependency.js
가 기본 내보내기 일 때 모든 것이 작동하도록하고 싶습니다 . 그러나 기본 수출에 대한 감시가 Jasmine에서 작동하지 않거나 적어도 작동하지 않을 수 있다는 것을 알고 있으므로 Jest에서도 가능하다는 희망을 가지고 있지 않습니다.
import
s를 계속해서 번역하지 않아도require
됩니다. 그래도 감사합니다.