2017-03-04 11 views
2

Jestユニットテストの初心者です。Jest React-native関数を模擬してレスポンスを返す方法

が複数の呼び出しを行うコンポーネントをテストする場合は、からGeolocationへのgetCurrentPosition()メソッドをテストします。

関数を呼び出すたびに、新しい座標オブジェクトを返したいとします。

私は様々な記事やチュートリアルを読んでいますが、まだ苦労しています。

すべてのアイデア?

答えて

3

global.navigatorを使用してナビゲータオブジェクトにアクセスできます。だから、getCurrentPositionを模擬するためには、単にそれにjest.fnを割り当てる:

global.navigator = { 
    getCurrentPosition : jest.fn() 
} 

それでは、どのようにすべての呼び出しのための新しい座標を返すように。読み取ることができません:最も簡単な解決策は、私は私の冗談のテストファイルにこれを追加しようとしたが、私は、 `TypeError例外を取得したグローバルカウンタ

const coords = [[1, 2], [2, 3]] 
let counter = -1 
global.navigator = { 
    getCurrentPosition: jest.fn(() { 
    counter++ 
    return coords[counter] 
    }) 
} 

それとも、モック

const coords = [[1, 2], [2, 3]] 
global.navigator = { 
    getCurrentPosition: jest.fn(() => 
    coords[global.navigator.getCurrentPosition.mock.calls.length] 
) 
} 
+1

callsプロパティを使用することができますでしょう未定義のプロパティ 'getCurrentPosition'。 'global.navigator'を' global.navigator.geolocation'に変更しました。私のテストは合格になりました。免責事項:私はこれを書いている時点でネイティブと冗談に反応することは非常に新しいです。 –

関連する問題