2017-03-27 9 views
1

私は現在JESTを使用しており、ジャスミンを使用してreactJsアプリケーションをテストしています。別のベンダーサイトでホストされているjavascriptファイルがあり、その外部jsファイルのメソッド/オブジェクトにアクセスする必要があります。Jestを使用しているときに外部のjavascriptメソッド/オブジェクトにアクセスするには?

注:このアプリケーションはページの読み込み時にこの外部jsをロードし、アプリケーションのすべてのメソッドにアクセスできます。

オブジェクトとメソッドは、ここに用意されています

http://domain/scripts/vendor1/emd.js 

私は、オブジェクト(BBO)にアクセス必要な詳細でそれをロードし、 それをプッシュしようとしていますが、私は

をacccessするかどうかはわかりません

サンプル関数:

function pushEvent(obj){ 
bbo.setVar(obj.param1,obj.value1); 
bbo.setVar(obj.param2,obj.value2); 
bbo.pushEvent(eventAction,eventParameters.eventCode,eventParameters); 
} 

サンプルテスト:

it("should call customLinkClick function",() => { 
     reporting.pushEvent(obj); 
     expect(reporting.pushEvent).toHaveBeenCalled(); 
    }); 

私はJSをダウンロードしてテスト用にローカルで利用できるようにすることができますが、私はそれを避けようとしています。

+0

使用を '「私はなぜあなたがwouldnか分からないが、自分の外部スクリプトに引っ張ってjsdom.env'依存関係が必要です。 –

答えて

0

bbo.pushEventで何かが呼び出されたことをテストするには、それをスパイする必要があります。

bboがページ内に外部ファイルを読み込んでアプリケーションのグローバルネームスペースで利用できる場合は、テストで自分でオブジェクトを作成する必要があります。あなたのモジュールにbboをインポートする場合

global.bbo = { 
    setVar: jest.fn(), 
    pushEvent: jest.fn() 
} 
it("should call customLinkClick function",() = > { 
    reporting.pushEvent(obj); 
    expect(global.bbo.pushEvent).toHaveBeenCalled(); 
}); 

その後、あなたはそれを模擬する必要があります。

import bbo from 'bbo' 
jest.mock('bbo',() = > ({ 
    setVar: jest.fn(), 
    pushEvent: jest.fn() 
})) 
it("should call customLinkClick function",() = > { 
    reporting.pushEvent(obj); 
    expect(bbo.pushEvent).toHaveBeenCalled(); 
}); 
関連する問題