0

Jasmine と Karma を使用して AngularJS アプリケーションの単体テストを行っています。私が現在取り組んでいる単体テストは、文字列を日付に解析して timezoneJS オブジェクトを返す日付サービスです。karma.config ファイルに date.js ライブラリを含め、SPA のメイン アプリケーション ページで zoneFileBasePath も定義しました。angular アプリケーション ファイルはすべて、私の karma.config ファイルにも含まれています。

私が得ていた最初のエラーはこれでした:

ゾーン ファイル ディレクトリへのベース パスを定義してください -- timezoneJS.timezone.zoneFileBasePath。

そのため、単体テストに以下を含めました。

 timezoneJS.timezone.zoneFileBasePath = 'app/tz'

 timezoneJS.timezone.init({async:false})

すでに定義されているため、なぜこれが必要なのかわかりませんでしたが、それでも機能しました。

私は今、このエラーが発生しています

エラー: タイムゾーン "America/Chicago" が正しくないか、タイムゾーン レジストリに読み込まれていません。

この問題に関する投稿をいくつか見つけましたが、他の誰かにとってはうまくいくように思われる推奨事項の 1 つは、非同期をオフにすることでした。これを実行しましたが、まだ機能していません。

タイムゾーン ディレクトリの内容:

ここに画像の説明を入力

ご覧のとおり、これは、zoneFileBasePath 宣言で指定した app ディレクトリ内にあります。私のテストは、仕様やモックなどにさらに分割されたテスト フォルダー内のアプリと同じ平面にあります。

この日付サービスをテストできるようにする必要がありますが、コードをどのように構成しようとしても、この問題は解決しません。誰かが私を助けることができれば、私はそれを大いに感謝します. ありがとう。

4

1 に答える 1

1

TimezoneJS では、タイム ゾーン データ ファイルを取得するためにトランスポート層が必要です。

デフォルトでは、jQuery、Zepto、または Fleegix で動作します。おそらく単体テストにjQueryを含めるだけでうまくいくでしょう。

async:falsejQueryを使用する場合の設定は正しいと思います。

TimezoneJS を Angular に直接結び付けるこのプロジェクトをご覧ください。摂取しやすいかもしれません。

同じソース データを使用するが実装が異なる他のタイム ゾーン ライブラリの 1 つにも関心があるかもしれません。ここにリストします

于 2013-07-15T23:03:26.790 に答える