knockout.js - 大胆错误 : Object doesn't support property or method 'filter'

标签 knockout.js typescript jasmine chutzpah

我正在尝试在我的 knockout viewmodels 上运行 jasmine 测试,通过 chutzpah 用 typescript 编写,但由于以下错误,这似乎不可能:

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

每当我访问一个 knockout observable 时就会抛出这个错误,并且可以通过以下简单示例重新创建。

/// <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 与 knockout/typescript 组合不兼容?

更新

所以我设法通过执行以下操作让 chutzpah 运行我的测试:

  1. 从我的项目中删除“Jasmine Test Framework”NuGet 包并将其替换为“jasmine.js”NuGet 包。
  2. 将 jasmine specrunner.html 文件添加到我的测试目录,该文件引用我的测试及其依赖项
  3. 在 Tools->Options->Chutzpah->Unit Test Explorer 中将测试模式设置为 HTML
  4. 从测试资源管理器窗口运行测试

这让我的测试成功运行,但当我尝试通过右键单击运行时仍然遇到相同的异常 ->“运行 JS 测试”,我也无法调试测试。

问题似乎是我的引用都没有被解析(过滤方法在 jquery 中定义)所以我可能需要使用 require.js 或其他一些模块加载器来解析我的依赖关系?

最佳答案

这可以通过升级到最新版本的 Chutzpah 来解决。

关于knockout.js - 大胆错误 : Object doesn't support property or method 'filter' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19025107/

相关文章:

javascript - KnockoutJS 数据绑定(bind) : click from javascript click

javascript - 获取 Typescript "slice"元组的 'Parameters'

javascript - 将 Or 用于多种类型时,类型上不存在属性

typescript - Angular2 rc1,新路由器和传递数据

knockout.js - knockout 内容可编辑绑定(bind)

javascript - KnockOut.js 中可以进行依赖验证吗

javascript - jasmine - 如何在分配给 .bind 的函数和对象方法之间进行相等性比较?

javascript - 使用初始实例化类的 Jasmine 测试

javascript - 使用 knockout 可观察量进行计算会增加计算时间

javascript - Jasmine angularjs - 监视 Controller 初始化时调用的方法