2017-11-02 3 views
0

테스트 할 구성 요소 내에 사용되는 myHelper이라는 기능을 제공하는 바벨 플러그인을 사용하고 있습니다 (그러나 바벨 플러그인으로 제공되므로 가져올 수는 없습니다).Jest 테스트에서 babel plugin을 모방하는 방법?

myHelper을 Jest와 "글로벌하게"모의하려면 어떻게해야합니까?

+1

는이에 대한 샘플 자식의 repo를 제공 할 수 있습니까? –

+0

코드에 'MyHelper'를 사용하는 방법에 대한 코드 샘플을 항상 제공하십시오. – Bwaxxlo

답변

0

좋지 않은 방법 일 수 있습니다. myHelper을 글로벌로 설정하면 가능합니다. 요 갈 수있는 곳

// myHelper.js 
function myHelper(){ 
    return work() // expected 1 
} 
if (global) { 
    global.myHelperFunction = myHelper; 
} 

// myHelper.test.js 
test('TEST MY HELPER',() => { 
    expect(global.myHelperFunction()).toBe(1); 
}) 
0

나는 두 방향을 참조하십시오 이 - 전 세계적으로 도우미를 사용할 수 있도록하고 코드가 상호 작용하는 방식을 테스트 - babel-jest을 통해 도우미를 사용할 수 있도록하고

그에 따라 테스트를 작성 첫 번째 것은 jest 구성의 setupFiles 필드를 사용하여 수행 할 수 있습니다. 테스트를 실행하기 전에 실행될 스크립트 배열을 지정할 수 있습니다. 당신은 그 중 하나에서 도우미를 세계적으로 만들 수 있습니다.

두 번째 것은 농담 설정에서 transform을 지정하여 수행 할 수 있습니다. 예 :

"transform": { 
    "^.+\\.(js|jsx)$": "<rootDir>/node_modules/babel-jest" 
} 

귀하의 요청이 더 구체적이라면 언제든지 말씀해주십시오.

1

나는 그 구성 요소가 myHelper 속성을 받아 들일 수있게하여 선택적으로 바벨이 제공 한 myHelper 메서드를 모의합니다. 기본적으로 속성은 원래 myHelper 방법을 가리 것이다 :

class MyComponent extends Component { 
    constructor() { 
     // Use myHelper function like: 
     this.props.myHelper(); 
    } 

    return (
    <div>...</div> 
); 
} 

MyComponent.propTypes = { 
    myHelper: PropTypes.func.isRequired, 
}; 

MyComponent.defaultProps = { 
    // set by default to babel-provided method 
    myHelper: myHelper, 
}; 

.. 그리고, 예를 들어, enzyme를 사용하여 시험에서 그 :

const myHelperMock = jest.fn(); 
const wrapper = shallow(
    <MyComponent 
     myHelper={myHelperMock} 
    /> 
); 
관련 문제