2017-11-20 13 views
1

jest로 단위 테스트를 작성하고 제 3 자 라이브러리에서 생성자를 호출하는 함수를 테스트해야합니다 (테스트의 목적은 호출이 이루어 졌는지 확인하는 것입니다). 좋은 인수모조와 제 3 자 라이브러리 생성자 모의

제 3 patry 라이브러리

내가 생성자의 내부에서 온 jest.spyOn(Popper.prototype, 'constructor').mockImplementation(() => {}) 있지만 던지고 실수를 한 Popper.js

이다는

(따라서 호출 된 모의 함수가 아닙니다)

다음은 나의 테스트 코드입니다.

import Popper from 'popper.js'; 

    it('should call Popper constructor with correct argument',() => { 
    // Arrange 
    jest.mockImplementation(Popper.prototype, 'constructor',() => {}); 
    const refElem = document.createElement('div'); 
    const popElem = document.createElement('div'); 
    const placement = 'top'; 
    const container = document.createElement('div'); 

    // Act 
    popup.create(refElem, popElem, placement, container); 

    // Assert 
    expect(Popper.prototype.constructor).toHaveBeenCalled(); 

    }); 
+0

했나 시험에 행운이 있습니까? 나는 올바른지 (의심 스럽지만) 그것이 작동하는지 여부와 상관없이 단지 두 개의 생성자를'jest.fn()'으로 조롱했다. – MattyK14

+0

@ MattyK14이 질문의 주요 문제점은 제 생성자 중 하나가 아니라 3 부 라이브러리 중 하나였습니다. 어쨌든 작동하는 경우 자유롭게 youor 솔루션을 게시하고 광산을 살펴보십시오. – CharybdeBE

답변

0

마침내 뭔가 처리 할 수 ​​있다면. 나는 (jest.genmockfromModule하지 t 작업을 보인다 않기 때문에)

jest.mock ('popper.js',() => 
{ 
    class Popper { 
    constructor(a,b,c){ 
     this.spy(a,b,c); 
    } 
    spy(a,b,c) {} 
    destroy() {} 
    } 
    return Popper; 
}); 

스파이 기능이 하나 인 모의 모듈 수동으로 실시를 만든 것을 할 수 있습니다 생성자가 호출되었는지 여부를 알고 싶어 "spyOn"

(당신이 때문에 popper.js의 3 인자가 여기에)

좋은 매개 변수를 따라서 난 내 사양 파일에 그런 식으로 그것을 사용 :

import Popper from 'popper.js'; 
... 
jest.spyOn(Popper.prototype, 'spy');