我正在尝试在我的淘汰视图模型上运行茉莉花测试,通过 chutzpah 用打字稿编写,但由于以下错误,这似乎不可能:
Chutzpah Error: Object doesn't support property or method 'filter'
每当我访问淘汰赛 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 与淘汰赛/打字稿组合不兼容?
更新
因此,我设法通过执行以下操作让 chutzpah 运行我的测试:
- 从我的项目中删除“Jasmine 测试框架”NuGet 包,并将其替换为“jasmine.js”NuGet 包。
- 将 jasmine specrunner.html 文件添加到我的测试目录中,该目录引用我的测试及其依赖项
- 在 Tools->Options->Chutzpah->Unit Test Explorer 中将测试模式设置为 HTML
- 从测试资源管理器窗口运行测试
这使我的测试成功运行,但是当我尝试通过右键单击->“运行 JS 测试”运行时仍然遇到相同的异常,并且我也无法调试测试。
问题似乎是我的引用都没有得到解决(过滤方法在 jquery 中定义)所以也许我需要使用 require.js 或其他一些模块加载器来解决我的依赖关系?