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にテストを実行させることができました。
- プロジェクトから「Jasmine Test Framework」NuGet パッケージを削除し、代わりに「jasmine.js」NuGet パッケージに置き換えます。
- テストとその依存関係を参照する jasmine specrunner.html ファイルをテスト ディレクトリに追加します。
- [ツール]->[オプション]->[フツパー]->[単体テスト エクスプローラー] で、[テスト モード] を [HTML] に設定します。
- テスト エクスプローラー ウィンドウからテストを実行する
これにより、テストが正常に実行されますが、右クリック->「JSテストの実行」で実行しようとすると、同じ例外が発生し、テストもデバッグできません。
問題は、参照が解決されていないように見える (フィルター メソッドが jquery 内で定義されている) ため、依存関係を解決するために、require.js またはその他のモジュール ローダーを使用する必要があるのではないでしょうか?