問題タブ [isparta]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Karma カバレッジと Babel+Browserify 前処理
Karma を使用して ES6 コードをテストしています。ミックスに追加karma-coverage
するときは、有効なレポートを作成するためにカバレッジ ツールのすべてのソース ファイルを追加する必要がありますが、そうすると、すべてのブラウザーで Karma から次のエラーが表示されます。
PhantomJS 1.9.8 (Mac OS X 0.0.0) エラー
エラー: 不変違反: _registerComponent(...): ターゲット コンテナーは DOM 要素ではありません。
/var/folders/55/9_128mq95kz1q_2_vwy7qllw0000gn/T/41cf272955d73fbba8ad1df941172139.browserify:46444:0 <- ../../node_modules/react/lib/invariant.js:49:0 で
私の Karma 設定ファイルは次のとおりです。
'./client/**/*.js',
配列から削除するfiles
と、テストは機能しますが、カバレッジにはテスト コードしか表示されません。gulp の Karma を で使用しgulp-karma
ていますが、これは問題とは関係ないと思います。
node.js - Mocha のテスト ディレクトリを定義するにはどうすればよいですか?
ES6 を使用してテストを作成し、次のように (コード カバレッジ レポートを使用して) 実行しました。
ただし、テストは見つかりません。./test
ディレクトリがある場合にのみ機能します。
別のテスト ディレクトリを定義する方法について何か提案はありますか?
unit-testing - isparta、webpack、jasmine、karma で正確なコード カバレッジ数を取得するにはどうすればよいですか?
webpack、isparta、jasmine、および karma を組み合わせて使用しようとすると、正しいコード カバレッジ数を取得できません。テスト実行の最後の数値は、ES6 コードを正しく反映していません。ただし、UI には正しい ES6 ファイルが表示され、正しいハイライトが表示されますが、正しい数値ではありません。
これが私が話していることのスクリーンショットです。
間違ったコード カバレッジ番号:
コードと強調表示は正しいですが、数字は正しくありません。たとえば、ステートメント番号は完全にオフです。これらの数値は、トランスパイルされたコードからのものであると想定しています。
ここに私のkarma.config.jsがあります:
これが私のwebpack構成です:
これがtest.context.jsです:
sonarqube - SonarQube が JavaScript の lcov.info を読み取れない
ファイルを生成するために、JavaScript 単体テストで isparta-loader と一緒に karma-coverage を使用していlcov.info
ます。
しかし、JavaScript プラグインを使用して SonarQube 分析を実行すると、テスト カバレッジ レポートが生成されません。に 1 つのファイルのデータが含まれている場合lcov.info
、カバレッジ レポートは失敗しませんが、lcov.info
に 2 つ以上のファイルのデータが含まれている場合、次の時点で常に失敗します。
13:43:27.635 INFO - 結果をデータベースに保存します 13:43:27.649 DEBUG - org.sonar.batch.phases.GraphPersister を実行します 13:43:27.714 DEBUG - org.sonar.batch.index.SourcePersister を実行します 13:43:29.852 DEBUG - プロジェクトのセマフォを解放します: org.sonar.api.resources.Project@6b1e6f8b[id=7859,key=func.salesorder NG,qualifier=TRK], キー batch-func.salesorderNG INFO: ------ -------------------------------------------------- ---------------- 情報: 実行失敗情報: ---------------------------- -------------------------------------------- 合計時間: 4:14.804ファイナルメモリー: 23M/828M INFO: ----------------------------------------- ---------------------------
エラー: ソナー ランナーの実行中にエラーが発生しました
org.sonar.runner.impl.RunnerException: org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:91) で Sonar を実行できません org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher. java:75) で java.security.AccessController.doPrivileged(Native Method) で org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69) で org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher. java:50) org.sonar.runner.api.EmbeddedRunner.doExecute (EmbeddedRunner.java:102) で org.sonar.runner.api.Runner.execute (Runner.java:100) で org.sonar.runner.Main .executeTask(Main.java:70) で org.sonar.runner.Main.execute(Main.java:59) で org.sonar.runner.Main.main(Main.java:53) 原因: java.lang.IllegalStateException: org.sonar.batch.phases.DatabaseModePhaseExecutor.executePersisters(DatabaseModePhaseExecutor.java:165) で org.sonar.batch.index.SourcePersister.persist(SourcePersister.java:84) でファイル ソースを保存できません。 org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java: 92) org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77) で org.sonar.batch.scan.ProjectScanContainer.scan(ProjectScanContainer.java:235) で org.sonar.batch.scan.ProjectScanContainer .scanRecursively(ProjectScanContainer.java:230) org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92) で org.sonar.api.platform で org.sonar.batch.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:220) で.ComponentContainer.execute(ComponentContainer.java:77) で org.sonar.batch.scan.ScanTask.scan(ScanTask.java:57) で org.sonar.batch.scan.ScanTask.execute(ScanTask.java:45) でorg.sonar.batch.bootstrap.TaskContainer.doAfterStart(TaskContainer.java:135) org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92) org.sonar.api.platform.ComponentContainer.execute( ComponentContainer.java:77) org.sonar.batch.bootstrap.GlobalContainer.executeTask (GlobalContainer.java:158) org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:95) で org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67) で org.sonar.runner.batch.IsolatedLauncher .execute(IsolatedLauncher.java:48) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド) で sun.reflect.NativeMethodAccessorImpl.invoke(不明なソース) で sun.reflect.DelegatingMethodAccessorImpl.invoke(不明なソース) で java.lang. Reflect.Method.invoke(Unknown Source) at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:87) ... 9 より多くの原因: java.lang.ArrayIndexOutOfBoundsException: -1 at java.util. java.util.ArrayList の ArrayList.elementData(不明なソース)。org.sonar.server.source.db.FileSourceDb$Data$Builder.getLinesBuilder(FileSourceDb.java:2911) で com.google.protobuf.RepeatedFieldBuilder.getBuilder(RepeatedFieldBuilder.java:245) で (不明なソース) を取得します。 org.sonar.batch.index.SourceDataFactory.consolidateData(SourceDataFactory. java:76) org.sonar.batch.index.SourcePersister.computeData(SourcePersister.java:152) で org.sonar.batch.index.SourcePersister.persist(SourcePersister.java:93) で org.sonar.batch.index .SourcePersister.persist(SourcePersister.java:81) ... 33 続きを読むorg.sonar.batch.index.SourceDataFactory.applyLineMeasure(SourceDataFactory.applyLineMeasure(SourceDataFactory. java:183) org.sonar.batch.index.SourceDataFactory.applyLineMeasures(SourceDataFactory.java:117) で org.sonar.batch.index.SourceDataFactory.consolidateData(SourceDataFactory.java:76) で org.sonar.batch.index .SourcePersister.computeData(SourcePersister.java:152) at org.sonar.batch.index.SourcePersister.persist(SourcePersister.java:93) at org.sonar.batch.index.SourcePersister.persist(SourcePersister.java:81) . .. 33 以上org.sonar.batch.index.SourceDataFactory.applyLineMeasure(SourceDataFactory.applyLineMeasure(SourceDataFactory. java:183) org.sonar.batch.index.SourceDataFactory.applyLineMeasures(SourceDataFactory.java:117) で org.sonar.batch.index.SourceDataFactory.consolidateData(SourceDataFactory.java:76) で org.sonar.batch.index .SourcePersister.computeData(SourcePersister.java:152) at org.sonar.batch.index.SourcePersister.persist(SourcePersister.java:93) at org.sonar.batch.index.SourcePersister.persist(SourcePersister.java:81) . .. 33 以上server.source.db.FileSourceDb$Data$Builder.getLinesBuilder(FileSourceDb.java:2911) at org.sonar.batch.index.SourceDataFactory.applyLineMeasure(SourceDataFactory.java:183) at org.sonar.batch.index.SourceDataFactory. applyLineMeasures (SourceDataFactory.java:117) で org.sonar.batch.index.SourceDataFactory.consolidateData(SourceDataFactory.java:76) で org.sonar.batch.index.SourcePersister.computeData(SourcePersister.java:152) で org.sonar .batch.index.SourcePersister.persist(SourcePersister.java:93) at org.sonar.batch.index.SourcePersister.persist(SourcePersister.java:81) ... 33 詳細server.source.db.FileSourceDb$Data$Builder.getLinesBuilder(FileSourceDb.java:2911) at org.sonar.batch.index.SourceDataFactory.applyLineMeasure(SourceDataFactory.java:183) at org.sonar.batch.index.SourceDataFactory. applyLineMeasures (SourceDataFactory.java:117) で org.sonar.batch.index.SourceDataFactory.consolidateData(SourceDataFactory.java:76) で org.sonar.batch.index.SourcePersister.computeData(SourcePersister.java:152) で org.sonar .batch.index.SourcePersister.persist(SourcePersister.java:93) at org.sonar.batch.index.SourcePersister.persist(SourcePersister.java:81) ... 33 詳細183) org.sonar.batch.index.SourceDataFactory.applyLineMeasures(SourceDataFactory.java:117) で org.sonar.batch.index.SourceDataFactory.consolidateData(SourceDataFactory.java:76) で org.sonar.batch.index.SourcePersister .computeData(SourcePersister.java:152) で org.sonar.batch.index.SourcePersister.persist(SourcePersister.java:93) で org.sonar.batch.index.SourcePersister.persist(SourcePersister.java:81) ... 33以上183) org.sonar.batch.index.SourceDataFactory.applyLineMeasures(SourceDataFactory.java:117) で org.sonar.batch.index.SourceDataFactory.consolidateData(SourceDataFactory.java:76) で org.sonar.batch.index.SourcePersister .computeData(SourcePersister.java:152) で org.sonar.batch.index.SourcePersister.persist(SourcePersister.java:93) で org.sonar.batch.index.SourcePersister.persist(SourcePersister.java:81) ... 33以上persist(SourcePersister.java:93) at org.sonar.batch.index.SourcePersister.persist(SourcePersister.java:81) ... 33 詳細persist(SourcePersister.java:93) at org.sonar.batch.index.SourcePersister.persist(SourcePersister.java:81) ... 33 詳細
にlcov.info
は、次の情報が表示されます。
javascript - Karma-Coverage レポートにコードがカバーされていることが表示される (これは明らかにカバーされていません)
HTML カバレッジ レポートを生成しようとしていますが、期待する出力が含まれていません。たぶん私はここで間違っているかもしれませんが、スペックファイルから呼び出された行とメソッドだけを表示する必要がありますよね?
どういうわけかそうではありません。
アップデート:
問題の概要を説明する実際の例を提供するリポジトリを作成しました。
https://github.com/gearsdigital/stunning-octo-train
これは私の(テスト)プロジェクトのセットアップです。このコードを実行するために JSFiddle をセットアップする方法がわからないため、必要に応じて GitHub リポジトリにプッシュできます。
TL;DR
HTML カバレッジ レポートを生成するプロセスがあります。このレポートは、カバーされているコードを示していますが、利用可能なテストがないため明らかにカバーされていません。
カルマ.conf.js:
webpack.config.js:
webpack.test.config.js:
ブートストラップ.js:
電卓.js:
ブートストラップ.spec.js:
生成されたレポート:
どのテストでも呼び出さadd()
れるのではなく、bootstrap.js
.
プロジェクトの構造:
node.js - Windows の msys git bash でノード スクリプトを使用するように環境変数を変更する必要がありますか?
Windows の msys git bash で npm スクリプトを使用できるように環境変数を変更する必要がありますか?
次のテストスクリプトがあります。
このスクリプトを実行しようとすると、次のエラーが表示されます。
isparta はグローバル モジュールとしてインストールされました。
それは、'which' と 'where' で見つけることができます。
msysgit ターミナルからの isparta:
Windows コマンドからの isparta:
angularjs - webpacked モジュール アプリで isparta とカルマを使用する
ES2015 角度コードのテスト カバレッジを取得しようとしています。
私の webapp は gulp-angular によって生成されます。これはデフォルトで、webpack を使用してすべての angular モジュールを 1 つのファイルにバンドルし、babel トランスパイラーを使用して ES5 コードを生成するタスクを提供します。
そのため、今のところ、コード カバレッジを取得しようとすると、ES5 コードと 1 つのファイル (バンドル 1) にのみ適用されます。
生成されたファイルではなく、ES2015コードと複数のファイルに配置したいと思います。テスト タスクが最初にタスクを起動してアプリをバンドルし、生成されたファイルを使用してテストを起動することを知っているので、その状態で必要なものを取得できるかどうか知りたいですか? (または、その場合はwebpackを使用できないのでしょうか?)
javascript - Gulp Node.js イスタンブール イスパルタ
イスタンブールとイスパルタで単体テストのカバレッジを取得しようとしていますが、問題が発生しています。
実際、ここに私のgulpファイルタスクがあります:
gulp「テスト」タスクを開始すると、次のエラーが発生します。
これらのエラーの発生を防ぐにはどうすればよいですか?
javascript - gulp-istanbul、isparta、ES6 のテスト カバレッジ
多くの単体テストがあるREST APIを構築しています。
コードカバレッジなど、それらに関する情報が必要です。
私は、IstanbulとIspartaを扱った多くの記事、および ES6 コードのテスト カバレッジ (mocha の助けを借りて) を実行する能力 (この記事) を読んだので、それらを使用したいと思いました。
NodeJS 0.12.7 を使用しており、Babel トランスパイラーを使用して ES6 コードを ES5 に変換しています。
次のようなgulpタスクを使用します。
ただし、以下のようなツールを使用しようとすると、次のようなエラーが発生します。
これは、イスタンブールが ES6 コードを認識できないことを意味します。私はおそらくそこに何かが欠けています。
だから私の質問は:
Node 0.12.7 を使用して、ES6 コード (各クラス コンストラクターで try/catch のような多くのコードが生成される ES5 コードではなく) で単体テストを行い、テスト カバレッジを適用するにはどうすればよいですか?