【发布时间】:2012-06-26 15:04:40
【问题描述】:
我正在尝试对我的淘汰视图模型进行无头测试。我特意避免在我的视图模型中处理任何 ui 结构,并将连线留给 html 页面。
这在 Jasmine 中运行良好,因为它在浏览器中运行,但是当我切换到 mocha 时,我最终会在淘汰赛的最后一行运行:
})(窗口、文档、导航器);
我已经研究过使用zombiejs,这将是一个不错的选择,但我没有看到一个关于如何在不更改淘汰源本身的情况下使用它的好故事。
关于如何解决这个问题的任何想法?
【问题讨论】:
-
您的视图模型中需要哪些剔除功能?如果它只是 observables,那么在测试 VM 部分时模拟它们并忽略其余的淘汰赛。
-
问题是即使使用调试版本,在调用 navigator.userAgent 时,knockout.js 脚本 (v2.1.0) 的初始化也会出错。因此,我无法测试 viewmodel 和 observable/computed/pubsub 部分。
-
我认为僵尸将是你最好的,因为它模拟了 dom。 Knockout 是作为 DOM 模型绑定器编写的,而不是通用模型绑定器。也许主干可能更符合您的开发风格。 Glue.js 也是一个不错的事件绑定器。
-
Glue 和 Zombie 仅适用于对敲除源或某种类型的助手进行修改。即使这样,zombie 也不会像淘汰赛使用它那样模拟出 window.navigator。
-
有了新的淘汰赛,这将不是问题。
标签: knockout.js mocha.js knockout-2.0