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 が並列モードで実行されている場合にのみ適用されます。詳細については、並列実行のガイドを参照してください。
目次
- システム要件
- jasmine-browser-runner のアップグレード
- Windows でのバックスラッシュ処理の変更
- 並列実行のサポート
- ブラウザでのグローバルエラー処理の変更
Env#execute
の変更node_boot.js
の削除
システム要件
以前にサポートされていた次の環境は、サポートされなくなりました
- Node <18
- Safari 14
- Firefox 91
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
で動作するはずです。