Jasmine 5.0へのアップグレード

概要

ほとんどのユーザーは、何も変更を加えずに Jasmine 5.0 にアップグレードできるでしょう。しかし、一部のユーザーに影響を与えるいくつかの破壊的な変更が含まれています。このガイドのアドバイスに従うことで、スムーズなアップグレード体験が得られる可能性が高くなります。

Jasmine 5.0 の破壊的な変更には、Windows でのファイル glob でのバックスラッシュの処理方法の変更、Env#execute の呼び出し方法の変更、Node ベースのライブラリが jasmine-core を起動する方法の変更、およびシステム要件の変更が含まれます。jasmine-core および jasmine のリリースノートで、破壊的な変更の完全なリストを確認できます。

すべてのユーザーは、5.0 にアップグレードする前に、最新の 4.x リリースにアップグレードし、エラーまたは非推奨の警告を解決することをお勧めします。特に、Windows で jasmine パッケージを使用しているユーザーは、少なくとも 4.5.0 に最初にアップグレードする必要があります。これは、そのリリースが Windows ユーザーに影響を与える重要な非推奨の警告を追加するためです。同じ理由で、Windows で jasmine-browser-runner パッケージを使用しているユーザーは、2.0 にアップグレードする前に、そのパッケージを少なくとも 1.3.0 にアップグレードする必要があります。

Jasmine 5.0 で導入された新しい並列実行モードには、スペックとレポーターの両方の記述方法に関する追加の制限があります。これらの制限は、Jasmine が並列モードで実行されている場合にのみ適用されます。詳細については、並列実行のガイドを参照してください。

目次

  1. システム要件
  2. jasmine-browser-runner のアップグレード
  3. Windows でのバックスラッシュ処理の変更
  4. 並列実行のサポート
  5. ブラウザでのグローバルエラー処理の変更
  6. Env#execute の変更
  7. node_boot.js の削除

システム要件

以前にサポートされていた次の環境は、サポートされなくなりました

Jasmine 5.0 は、これらの環境の一部で動作する可能性はありますが、それらに対するテストは行われなくなり、今後の 5.x リリースで互換性を維持しようとはしません。

jasmine-browser-runner のアップグレード

jasmine-browser-runner を使用している場合は、バージョン 2.0 にアップグレードしてください。パッケージ マネージャー (npm/yarn など) は、package.json で以前のバージョンが指定されていない限り、jasmine-core 5.0 以降を自動的にインストールする必要があります。

Windows でのバックスラッシュ処理の変更

従来、spec_files 設定プロパティなどのファイル glob のバックスラッシュは、Windows ではディレクトリ区切り文字として、その他のオペレーティング システムではエスケープ シーケンスの開始として扱われていました。jasmine 5.0 および jasmine-browser-runner 2.0 以降では、すべてのオペレーティング システムでエスケープ シーケンスの開始として扱われます。この変更により、Jasmine 設定ファイルの移植性が向上し、Windows ユーザーが特別な glob 構文に一致するファイル名を指定できるようになります。詳細については、glob パッケージの changelog および README を参照してください。

バックスラッシュに関連する非推奨の警告は、jasmine 4.6.0 および jasmine-browser-runner 1.3.0 で追加されました。Windows ユーザーは、jasmine 5.x または jasmine-browser-runner 2.x にアップグレードする前に、これらのバージョン以降にアップグレードし、すべての非推奨の警告を解決する必要があります。

並列実行のサポート

5.0 の最大の変更は、jasmine パッケージを介した Node.js での並列実行のサポートです。並列実行は、テスト スイートとレポーターの両方にいくつかの制約を課すため、変更を加えないと採用できないユーザーもいます。詳細については、並列でのスペックの実行を参照してください。

ブラウザでのグローバルエラー処理の変更

以前のバージョンの Jasmine では、window.onerror ハンドラーをインストールすることで、ブラウザで未処理の例外と未処理の Promise の拒否を検出していました。5.0 以降では、代わりに addEventListener を使用します。これは、Jasmine が起動前にコードでインストールしたエラー ハンドラーをオーバーライドしなくなったことを意味します。また、window.onerror を設定することで、Jasmine のグローバル エラー処理をオーバーライドできなくなったことも意味します。Jasmine のグローバル エラー処理をオーバーライドする必要がある場合は、spyOnGlobalErrors を使用してください。

addEventListener を使用すると、Jasmine は多くの場合、より適切なエラー情報を提供できます。ただし、一部のブラウザでは、エラーの原因が file:// URL から読み込まれた場合、エラー リスナーに提供される情報が制限されます。スタンドアロン ディストリビューションを使用している場合は、Web サーバー経由で Jasmine を読み込むと、未処理の例外と Promise の拒否をデバッグしやすくなる場合があります。これを行う簡単な方法として、SpecRunner.html が含まれるディレクトリから npx serve を実行します。

Env#execute の変更

Jasmine 5.0 では、Env#execute の async/await への移行が完了しました。ほとんどのユーザーは、Env#execute を直接呼び出さないか、「fire and forget」方式で使用するため、これについて気にする必要はありません。ただし、Env#execute にコールバックを渡したり、例外をキャッチしたりする人は、変更が必要になる場合があります。

以前

try {
    env.execute(null, function () {
        // Handle completion
    });
} catch (e) {
    // Handle failures to start
}

以後

try {
    const jasmineDoneInfo = await env.execute();
} catch (e) {
    // Handle failures to start, which are now delivered via promise rejection
    // rather than synchronous throw
}

ライブラリ作成者への注意

「以後」の形式は、jasmine-core 4.0.0 以降、または Promise が解決される値を無視する場合は 3.9.0 以降で動作します。

node_boot.js の削除

この変更は、主に Node.js で jasmine-core をラップするライブラリの作成者に影響を与え、エンド ユーザーには影響を与えません。5.0 より前のバージョンでは、Node で jasmine-core を初期化するために使用された boot 関数は、jasmine-core/node_boot.js を介して提供され、jasmine-core モジュール自体にもエクスポートされていました。node_boot.js は 5.0 には存在しません。

以前

const boot = require('jasmine-core/node_boot.js');

以後

const boot = require('jasmine-core').boot;

「以後」のバージョンは、Node.js をサポートするすべてのバージョンの jasmine-core で動作するはずです。