2017-11-20 13 views
1

私はjestを使ってユニットテストを書いています。サードパーティのライブラリからコンストラクタを呼び出す関数をテストする必要があります(テストの目的は、モックのモックサードパーティライブラリコンストラクタ

第三の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番目の部分ライブラリの1つであったことです。とにかく、うまくいけばあなたのソリューションを投稿して、私の姿を見てください – CharybdeBE

答えて

0

最終的にそれについて何かすることができたら。 (jest.genmockfromModuleがtの仕事を思われていないため)私はスパイ機能を使用すると、コンストラクタがで呼び出されているかどうかを知りたいあなたは「spyOn」ことができるものである

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

モックモジュールてmanualyを作成しました良いパラメータ

(ここにあなたがいるためpopper.jsの3つの引数を持っている)

このように私は私のspecファイルにそのようにそれを使用する:

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