2

chutzpah を介して typescript で記述されたノックアウト ビューモデルでジャスミン テストを実行しようとしていますが、次のエラーのために実行できないようです。

Chutzpah Error: Object doesn't support property or method 'filter'

このエラーは、ノックアウト オブザーバブルにアクセスするたびにスローされ、次の簡単な例で再現できます。

/// <reference path="../../typings/jquery/jquery.d.ts" />
/// <reference path="../../typings/knockout/knockout.d.ts" />
/// <reference path="../../typings/jasmine/jasmine.d.ts" />

module Example {
    export class KnockoutClass {
        public anObservable = ko.observable<string>();

        public aComputed = ko.computed<boolean>(() => {
            return this.anObservable().length() > 5;
        });
    }
}

describe("This", () => {
    it(" will throw an error", () => {        

        var temp: Example.KnockoutClass = new Example.KnockoutClass();

    });
});

ここで根本的に間違ったことをしていますか、それとも chutzpah はノックアウト/タイプスクリプトの組み合わせと互換性がありませんか?

アップデート

したがって、次のようにしてchutzpahにテストを実行させることができました。

  1. プロジェクトから「Jasmine Test Framework」NuGet パッケージを削除し、代わりに「jasmine.js」NuGet パッケージに置き換えます。
  2. テストとその依存関係を参照する jasmine specrunner.html ファイルをテスト ディレクトリに追加します。
  3. [ツール]->[オプション]->[フツパー]->[単体テスト エクスプローラー] で、[テスト モード] を [HTML] に設定します。
  4. テスト エクスプローラー ウィンドウからテストを実行する

これにより、テストが正常に実行されますが、右クリック->「JSテストの実行」で実行しようとすると、同じ例外が発生し、テストもデバッグできません。

問題は、参照が解決されていないように見える (フィルター メソッドが jquery 内で定義されている) ため、依存関係を解決するために、require.js またはその他のモジュール ローダーを使用する必要があるのではないでしょうか?

4

1 に答える 1