jestを使用してコールバック内のコードカバレッジを取得するにはどうすればよいですか?

npc

コードカバレッジに問題があり、理解できません。GoogleジオコーディングAPIを使用して、コールバック関数内で応答が返される座標をクエリしています。Jestはテストに使用されます。

これは、コールバックを使用したテスト可能な呼び出しです。

const geocoder = new google.maps.Geocoder();
geocoder.geocode({address: address}, (results, status) => {
  // want to get coverage in this block
  // expected test results are OK and logging shows right results
});

これがテストです。テスト時にgoogle.mapsはデフォルトで利用できないため、次のような解決策を見つけました。

it('test', () => {
  const constructorSpy = spyOn(google.maps, 'Geocoder');
  const geocoder = createSpyObj('Geocoder', ['geocode']);
  constructorSpy.and.returnValue(geocoder);
  geocoder.geocode = jest.fn((adr, callback) => callback(response, 'OK'));
  // expected results that are all OK
});

createSpyObj https://stackoverflow.com/a/45319913/1756136

const createSpyObj = (baseName, methodNames): { [key: string]: Mock<any> } => {
  let obj: any = {};
  for (let i = 0; i < methodNames.length; i++) {
    obj[methodNames[i]] = jest.fn();
  }
  return obj;
};

そして、google.mapsはsetupTests.jsで定義されています。テストしていないときは、reactがグーグルマップをロードするとgoogle.mapsが利用できます

window.google = {
  maps: {
    Geocoder: {},
    GeocoderStatus: {
      OK: 'OK'
    }
  }
};

私が試したり調べたりできるアイデアはありますか?カバレッジのみが問題であり、期待される結果は問題ありません。

npc

コードカバレッジは、実際にはこの実装ですでに正しく機能しています。問題は、「if」句しかない「if」句の「else」ステートメントにアクセスしていなかったことです。

また、スパイせずにプロパティとして定義してテストを実行することもできます。

it('test', () => {
  Object.defineProperty(google, 'maps', {
    value: {
      Geocoder: function () {
        return {
          geocode: jest.fn((adr, callback) => callback(response, 'OK'))
        }
      }
    }
  });
  // expect..
});

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

jestとdetoxを使用してコードカバレッジレポートを生成するにはどうすればよいですか?

分類Dev

Pesterを使用してすべてのブランチのコードカバレッジを取得するにはどうすればよいですか?

分類Dev

Golangで100%のコードカバレッジを取得するにはどうすればよいですか?

分類Dev

jest +酵素を使用してAxiosAPIに渡されるカスタムコールバックをテストするにはどうすればよいですか

分類Dev

Visual Studio 2010 UltimateのVB.NETで「catchwithrethrow」ブロックのコードカバレッジを100%取得するにはどうすればよいですか?

分類Dev

Javaコードを使用してJavaパッケージ内でバッチファイルを実行するにはどうすればよいですか?

分類Dev

Javaコードを使用してJavaパッケージ内でバッチファイルを実行するにはどうすればよいですか?

分類Dev

C ++でバックトレースを使用して正しいコード行を取得するにはどうすればよいですか?

分類Dev

複数のプロジェクトからコードカバレッジを取得するにはどうすればよいですか

分類Dev

tkinterのバインドされたコールバックからコールバック参照を取得するにはどうすればよいですか?

分類Dev

コールバックを使用してpopulateを使用するにはどうすればよいですか?

分類Dev

Scalaコードカバレッジを完全に実行するにはどうすればよいですか?

分類Dev

ispartaを使用してカルマのコードカバレッジからjqueryなどのサードパーティのインポートを除外するにはどうすればよいですか?

分類Dev

コードカバレッジのMakeMakerターゲットを取得するにはどうすればよいですか?

分類Dev

JavaScriptオーバーレイタイプ(GWT)を使用してコールバックをラップするにはどうすればよいですか?

分類Dev

CSSグリッドレイアウトを使用して、スティッキーヘッダーとフッターを持つコンテンツのスクロールバーを取得するにはどうすればよいですか?

分類Dev

TestNGでRESTAPIをテストするときに、コードカバレッジレポートを取得するにはどうすればよいですか?

分類Dev

特定のクラスをコードカバレッジに含めないようにするにはどうすればよいですか?(Java)

分類Dev

Sonarqubeで新しいコードカバレッジを取得するにはどうすればよいですか?

分類Dev

JSONマージパッチを使用して、サブコレクションのメンバーを参照するにはどうすればよいですか?

分類Dev

同じコールバック関数を使用して複数の変数をトレースするにはどうすればよいですか?

分類Dev

関数内でコールバック関数を使用するにはどうすればよいですか?

分類Dev

twitter、pinterest、tumblrのコールバック関数を使用してシェアをカウントするにはどうすればよいですか?

分類Dev

問題が発生していないときにXcodeコードカバレッジを表示するにはどうすればよいですか?

分類Dev

この静的ライブラリにリンクするプロジェクトを使用して、XCode 5の静的ライブラリのコードカバレッジを計算するにはどうすればよいですか?

分類Dev

jqueryコールバック関数内で現在のオブジェクト参照を取得するにはどうすればよいですか?

分類Dev

カーネルモジュールを使用して現在のバッテリー統計を取得するにはどうすればよいですか?

分類Dev

forEachメソッドとコールバックを唯一の引数として使用して、配列内のすべての名前をコンソールログに記録するにはどうすればよいですか?

分類Dev

カルマコードカバレッジレポートからファイルを除外するにはどうすればよいですか?

Related 関連記事

  1. 1

    jestとdetoxを使用してコードカバレッジレポートを生成するにはどうすればよいですか?

  2. 2

    Pesterを使用してすべてのブランチのコードカバレッジを取得するにはどうすればよいですか?

  3. 3

    Golangで100%のコードカバレッジを取得するにはどうすればよいですか?

  4. 4

    jest +酵素を使用してAxiosAPIに渡されるカスタムコールバックをテストするにはどうすればよいですか

  5. 5

    Visual Studio 2010 UltimateのVB.NETで「catchwithrethrow」ブロックのコードカバレッジを100%取得するにはどうすればよいですか?

  6. 6

    Javaコードを使用してJavaパッケージ内でバッチファイルを実行するにはどうすればよいですか?

  7. 7

    Javaコードを使用してJavaパッケージ内でバッチファイルを実行するにはどうすればよいですか?

  8. 8

    C ++でバックトレースを使用して正しいコード行を取得するにはどうすればよいですか?

  9. 9

    複数のプロジェクトからコードカバレッジを取得するにはどうすればよいですか

  10. 10

    tkinterのバインドされたコールバックからコールバック参照を取得するにはどうすればよいですか?

  11. 11

    コールバックを使用してpopulateを使用するにはどうすればよいですか?

  12. 12

    Scalaコードカバレッジを完全に実行するにはどうすればよいですか?

  13. 13

    ispartaを使用してカルマのコードカバレッジからjqueryなどのサードパーティのインポートを除外するにはどうすればよいですか?

  14. 14

    コードカバレッジのMakeMakerターゲットを取得するにはどうすればよいですか?

  15. 15

    JavaScriptオーバーレイタイプ(GWT)を使用してコールバックをラップするにはどうすればよいですか?

  16. 16

    CSSグリッドレイアウトを使用して、スティッキーヘッダーとフッターを持つコンテンツのスクロールバーを取得するにはどうすればよいですか?

  17. 17

    TestNGでRESTAPIをテストするときに、コードカバレッジレポートを取得するにはどうすればよいですか?

  18. 18

    特定のクラスをコードカバレッジに含めないようにするにはどうすればよいですか?(Java)

  19. 19

    Sonarqubeで新しいコードカバレッジを取得するにはどうすればよいですか?

  20. 20

    JSONマージパッチを使用して、サブコレクションのメンバーを参照するにはどうすればよいですか?

  21. 21

    同じコールバック関数を使用して複数の変数をトレースするにはどうすればよいですか?

  22. 22

    関数内でコールバック関数を使用するにはどうすればよいですか?

  23. 23

    twitter、pinterest、tumblrのコールバック関数を使用してシェアをカウントするにはどうすればよいですか?

  24. 24

    問題が発生していないときにXcodeコードカバレッジを表示するにはどうすればよいですか?

  25. 25

    この静的ライブラリにリンクするプロジェクトを使用して、XCode 5の静的ライブラリのコードカバレッジを計算するにはどうすればよいですか?

  26. 26

    jqueryコールバック関数内で現在のオブジェクト参照を取得するにはどうすればよいですか?

  27. 27

    カーネルモジュールを使用して現在のバッテリー統計を取得するにはどうすればよいですか?

  28. 28

    forEachメソッドとコールバックを唯一の引数として使用して、配列内のすべての名前をコンソールログに記録するにはどうすればよいですか?

  29. 29

    カルマコードカバレッジレポートからファイルを除外するにはどうすればよいですか?

ホットタグ

アーカイブ