6

ユーザーが日付を入力できるフォームがあります。つまり<input type="date">、値はyyyy-MM-dd形式で送信されます。文字列を使用してDateオブジェクトを作成すると、タイムゾーンがユーザーのブラウザに設定されているものであると想定されます。これ私が望む動作です。

次に、日付値を使用して、ISO 日付/時刻文字列を想定する REST API に対してクエリを作成しています。DatetoISOStringオブジェクトの関数がすべてを正しく処理するため、これは問題ありません。

ただし、このコードを単体テストしている場合、入力をyyyy-MM-dd文字列に設定し、出力が予想される ISO タイムスタンプ文字列であることをアサートすると、テストは特定のタイム ゾーンでのみ機能します。テストでタイムゾーンを強制する方法はありますか?

Jasmine スパイを使用して次のようなことを試みました。

var fixedTime = moment().zone(60).toDate()
spyOn(window, 'Date').andCallFake(function() {
    return fixedTime;
});

しかし、コンストラクターには非常に多くのバリエーションがあり、moment.js によって呼び出される方法が非常に多いことを考えると、これはかなり非現実的であり、無限ループに陥っています。

4

1 に答える 1