无头击倒视图模型测试与摩卡

S. *_*ert 11 mocha.js knockout-2.0 knockout.js

我正在尝试对我的淘汰视图模型进行无头测试.我故意避免在我的viewmodel中处理任何ui构造并将连接保留到html页面.

这在Jasmine中很有效,因为它在浏览器中运行,但是当我切换到mocha时,我最终会先进入淘汰赛的最后一行,即:

})(窗口,文件,导航器);

我已经看过使用zombiejs这将是一个不错的选择,但我没有看到如何使用它而不改变淘汰源本身的好故事.

有关如何处理此问题的任何想法?

Kat*_*ato 5

这也是我目前关注的一个话题。我将把我的发现放在这里,希望它们能为您指明正确的方向。

我首先尝试的可能路线是PhantomJS。它是一个无头 WebKit 浏览器,因此它应该具有出色的 DOM、JSON、HTML5 和 CSS 选择器支持(例如,它可以与 jQuery 和 qUnit 配合使用)。

我选择这个是因为它由 knockout.js 本身使用,我在 knockout.js 存储库中发现了它,其中有一个 .travis.yml 文件和以下注释:

在此输入图像描述

我没有任何证据证明这会起作用,但我对它在 knockout.js 核心中的使用感到鼓舞。我还发现了这个淘汰/幻影的运行脚本,看起来是一个很好的启动点。

我还发现了一些 通过 node.js 使用 Mocha 和 PhantomJS 的示例,包括扩展 grunt以在 Phantom 中运行 mocha 的 lib,以及显示如何 在 PhantomJS 中运行 mocha 的脚本。所以这部分至少是确定的。

knockoutjs 档案中提到的另一个解决方案是使用knockout-nodeJsDOM创建一个可用的 DOM,但乍一看,这似乎太模糊了,很可能导致实现您自己的测试环境。

有一个幻灯片表明zombie.js可以与knockout/node/等一起使用。但我找不到任何确凿的证据,所以我也不喜欢这条路。

  • @JohnRayner 你介意发布你的工作流程的描述吗? (2认同)