Jestがこのコードで75%のブランチカバレッジを示す原因は何ですか?

ネイトレビン

私はファイルを持っていますがparsePredicate.ts、その中にブランチはないと思います。ただし、Jestカバレッジレポートによると、ブランチカバレッジは75%にすぎません。枝はどこにありますか?

parsePredicate.ts

import parseIdentifier from "../parseIdentifier/parseIdentifier";
import parseOperator from "../parseOperator/parseOperator";
import { parseExpression } from "../parseExpression/parseExpression";

const parsePredicate = (str: string)=>{
    let {identifier: left, rest:identRest} = parseIdentifier(str);
    let {operator, rest:opRest} = parseOperator(identRest);
    let {expression: right, rest:exprRest} = parseExpression(opRest);
    return { left: left, operator: operator, right: right, rest: exprRest };
}
export default parsePredicate;

parsePredicate.test.ts

import parsePredicate from "./parsePredicate";
import parseIdentifier from "../parseIdentifier/parseIdentifier";
import parseOperator from "../parseOperator/parseOperator";
import { parseExpression } from "../parseExpression/parseExpression";

jest.mock("../parseIdentifier/parseIdentifier");
jest.mock("../parseOperator/parseOperator");
jest.mock("../parseExpression/parseExpression");

test("Parsing a predicate with number returns proper values", ()=>{
    // @ts-ignore
    parseIdentifier.mockReturnValueOnce({identifier: "x", rest:" = 1"});
    // @ts-ignore
    parseOperator.mockReturnValueOnce({operator: "=", rest:" 1"});
    // @ts-ignore
    parseExpression.mockReturnValueOnce({expression: "1", rest:""});
    expect(parsePredicate("x = 1")).toStrictEqual({left:"x", operator:"=", right:"1", rest:""});
});
test("Parsing a predicate with math returns proper values", ()=>{
    // @ts-ignore
    parseIdentifier.mockReturnValueOnce({identifier: "x", rest:" = 1 + 1"});
    // @ts-ignore
    parseOperator.mockReturnValueOnce({operator: "=", rest:" 1 + 1"});
    // @ts-ignore
    parseExpression.mockReturnValueOnce({expression: "1 + 1", rest:""});
    expect(parsePredicate("x = 1 + 1")).toStrictEqual({left:"x", operator:"=", right:"1 + 1", rest:""});
});
test("Parsing a predicate with string returns proper values", ()=>{
    // @ts-ignore
    parseIdentifier.mockReturnValueOnce({identifier: "x", rest:" = 'Hello World'"});
    // @ts-ignore
    parseOperator.mockReturnValueOnce({operator: "=", rest:" 'Hello World'"});
    // @ts-ignore
    parseExpression.mockReturnValueOnce({expression: "'Hello World'", rest:""});
    expect(parsePredicate("x = 'Hello World'")).toStrictEqual({left:"x", operator:"=", right:"'Hello World'", rest:""});
});
test("Parsing a predicate with identifier returns proper values", ()=>{
    // @ts-ignore
    parseIdentifier.mockReturnValueOnce({identifier: "x", rest:" = ident"});
    // @ts-ignore
    parseOperator.mockReturnValueOnce({operator: "=", rest:" ident"});
    // @ts-ignore
    parseExpression.mockReturnValueOnce({expression: "ident", rest:""});
    expect(parsePredicate("x = ident")).toStrictEqual({left:"x", operator:"=", right:"ident", rest:""});
});

実行するjest --coverageと、parsePredicate.tsファイルに対して次の出力が得られます。

---------------------|---------|----------|---------|---------|-------------------
File                 | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
---------------------|---------|----------|---------|---------|-------------------
parsePredicate       |     100 |       75 |     100 |     100 |                   
  parsePredicate.ts  |     100 |       75 |     100 |     100 | 11   

ご覧のとおり、11行目がカバーされていないことがわかります。ただし、11行目は単なるexportステートメントです。

export default parsePredicate;

lcovレポートは次のようになりますlcovレポート。nまたはjを押しても何も変わらないことに注意してください。

私はこのに探してきた、そしてそれのように思えるかもしれしかし、私は確信している固定について移動する方法はないです、バベルによって生成されたesmoduleグルーコードで行う必要があります。

さらに情報が必要な場合はコメントを残してください。どんな助けでも大歓迎です。

ネイトレビン

かなり長い間問題のオンとオフを理解しようとした後、私は次の答えにたどり着きました。

基本的に、私jest.config.jsv8カバレッジプロバイダーを使用していました

// Indicates which provider should be used to instrument code for coverage
coverageProvider: "v8",

私はノードバージョン12.16.1を使用しているので、このプロバイダーはあまり優れておらず、多くの問題がありました。

babelプロバイダーに変更すると、私が抱えていたすべての問題が修正され、このコードに100%のブランチカバレッジが与えられました。

// Indicates which provider should be used to instrument code for coverage
coverageProvider: "babel",

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Jestカバレッジ(イスタンブール)がこのVueコンポーネントメソッドで0ブランチを測定するのはなぜですか?

分類Dev

コードカバレッジ対応のビルドが失敗する原因は何ですか?

分類Dev

jacocoブランチカバレッジとソナー条件カバレッジの違いは何ですか?

分類Dev

ブロックカバレッジとブランチカバレッジの違いは何ですか?

分類Dev

コードカバレッジの失敗コードカバレッジは72%です。この展開を完了するには、少なくとも75%のカバレッジが必要です

分類Dev

コードカバレッジの失敗コードカバレッジは72%です。この展開を完了するには、少なくとも75%のカバレッジが必要です

分類Dev

if条件でfor-inループのjestのブランチカバレッジを増やす方法は?

分類Dev

100%のステートメントカバレッジなしで100%のブランチカバレッジを持つことは可能ですか?

分類Dev

Xamarin.Android用のグリッドカスタムレンダラーがこの例外をスローする原因は何ですか?

分類Dev

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

分類Dev

サーブレットの実行時に「Javaランタイム環境(JRE)バージョン1.7がこのドライバでサポートされていない...」の原因は何ですか?

分類Dev

PHPUnitのコードカバレッジのスイッチポイントのパーセンテージを90%から75%に変更するにはどうすればよいですか?

分類Dev

カッコン病に苦しむハードドライブの原因は何ですか?

分類Dev

「ターゲットのマルチバイトコードページにUnicode文字のマッピングが存在しない」原因は何ですか?

分類Dev

コードカバレッジの部分的なヒットとは何ですか?

分類Dev

Linuxのcronジョブは、バックグラウンドで実行することを示すために「&」で指定する必要がありますか?

分類Dev

このセレンエラーの原因は何ですか?

分類Dev

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

分類Dev

「このコンピューターはラップトップです」を示すキーがWindowsレジストリにありますか

分類Dev

VS2013のコードカバレッジは、実際のコードではなく、テストのカバレッジを示しています

分類Dev

Java 7のG1ガベージコレクターがコンカレントマークフェーズを中止する原因は何ですか?

分類Dev

sboxテーブルを作成するためのこのビジュアルベーシックコードのc#バージョンは何ですか?

分類Dev

コードカバレッジレポートに、ライブラリがカバーされていないと表示されるのはなぜですか?

分類Dev

IntellijのJUnitTest Suiteでコードカバレッジを実行することは可能ですか?

分類Dev

バックエンドサーバーがGoogleドライブAPIを使用することを承認するための最良の方法は何ですか?

分類Dev

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

分類Dev

C#/。NETの高品質のコードカバレッジには何を使用できますか?

分類Dev

カーネルバージョンをアップグレードする最良の方法は何ですか?

分類Dev

Kotlinコルーチンがこのコードをブロックするのはなぜですか?

Related 関連記事

  1. 1

    Jestカバレッジ(イスタンブール)がこのVueコンポーネントメソッドで0ブランチを測定するのはなぜですか?

  2. 2

    コードカバレッジ対応のビルドが失敗する原因は何ですか?

  3. 3

    jacocoブランチカバレッジとソナー条件カバレッジの違いは何ですか?

  4. 4

    ブロックカバレッジとブランチカバレッジの違いは何ですか?

  5. 5

    コードカバレッジの失敗コードカバレッジは72%です。この展開を完了するには、少なくとも75%のカバレッジが必要です

  6. 6

    コードカバレッジの失敗コードカバレッジは72%です。この展開を完了するには、少なくとも75%のカバレッジが必要です

  7. 7

    if条件でfor-inループのjestのブランチカバレッジを増やす方法は?

  8. 8

    100%のステートメントカバレッジなしで100%のブランチカバレッジを持つことは可能ですか?

  9. 9

    Xamarin.Android用のグリッドカスタムレンダラーがこの例外をスローする原因は何ですか?

  10. 10

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

  11. 11

    サーブレットの実行時に「Javaランタイム環境(JRE)バージョン1.7がこのドライバでサポートされていない...」の原因は何ですか?

  12. 12

    PHPUnitのコードカバレッジのスイッチポイントのパーセンテージを90%から75%に変更するにはどうすればよいですか?

  13. 13

    カッコン病に苦しむハードドライブの原因は何ですか?

  14. 14

    「ターゲットのマルチバイトコードページにUnicode文字のマッピングが存在しない」原因は何ですか?

  15. 15

    コードカバレッジの部分的なヒットとは何ですか?

  16. 16

    Linuxのcronジョブは、バックグラウンドで実行することを示すために「&」で指定する必要がありますか?

  17. 17

    このセレンエラーの原因は何ですか?

  18. 18

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

  19. 19

    「このコンピューターはラップトップです」を示すキーがWindowsレジストリにありますか

  20. 20

    VS2013のコードカバレッジは、実際のコードではなく、テストのカバレッジを示しています

  21. 21

    Java 7のG1ガベージコレクターがコンカレントマークフェーズを中止する原因は何ですか?

  22. 22

    sboxテーブルを作成するためのこのビジュアルベーシックコードのc#バージョンは何ですか?

  23. 23

    コードカバレッジレポートに、ライブラリがカバーされていないと表示されるのはなぜですか?

  24. 24

    IntellijのJUnitTest Suiteでコードカバレッジを実行することは可能ですか?

  25. 25

    バックエンドサーバーがGoogleドライブAPIを使用することを承認するための最良の方法は何ですか?

  26. 26

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

  27. 27

    C#/。NETの高品質のコードカバレッジには何を使用できますか?

  28. 28

    カーネルバージョンをアップグレードする最良の方法は何ですか?

  29. 29

    Kotlinコルーチンがこのコードをブロックするのはなぜですか?

ホットタグ

アーカイブ