我试图做我淘汰赛的ViewModels的无头测试。 我故意避免与任何UI结构在我的视图模型处理并离开wireup到HTML页面。
这在茉莉的伟大工程,因为它在浏览器中运行,但是当我切换到摩卡 ,我结束了在运行的头一到淘汰赛上最后一行是:
})(窗口,文件,导航器);
我看使用zombiejs这将是一个不错的选择,但我不明白如何使用它没有改变淘汰赛源本身一个好故事。
任何思考如何处理这个?
我试图做我淘汰赛的ViewModels的无头测试。 我故意避免与任何UI结构在我的视图模型处理并离开wireup到HTML页面。
这在茉莉的伟大工程,因为它在浏览器中运行,但是当我切换到摩卡 ,我结束了在运行的头一到淘汰赛上最后一行是:
})(窗口,文件,导航器);
我看使用zombiejs这将是一个不错的选择,但我不明白如何使用它没有改变淘汰赛源本身一个好故事。
任何思考如何处理这个?
这是目前我的雷达主题为好。 我会在这里倾倒我的调查结果,他们可能会为你指明正确的方向的希望。
可能途径,我将首先尝试将PhantomJS 。 这是一个无头WebKit浏览器,所以它应该具有良好的DOM,JSON,HTML5和CSS选择器支持(它的工作原理与jQuery和qUnit ,例如)。
我选择了这个,因为它使用knockout.js本身,这是我在knockout.js仓库,那里有一个.travis.yml文件,此评论发现:
我没有任何证据,这是去上班,但被其knockout.js核心使用的鼓励。 我还发现了淘汰赛/幻这个亚军脚本 ,看起来像一个巨大的启动点。
我还发现一个 小 例子通过node.js中使用摩卡和PhantomJS,包括这个LIB扩展咕噜内运行幻影摩卡,而这个脚本显示如何运行里面PhantomJS摩卡 。 所以这部分是确定的,至少是。
另一种解决方案在knockoutjs档案指出 ,就是用基因敲除节点和JsDOM创建一个可行的DOM,但乍看之下,这似乎太含糊不清,并可能导致在执行自己的测试环境。
有一个slidedeck暗示 zombie.js将与淘汰赛/节点/工作等。 但是,我找不到任何提供确凿的证据,所以我不喜欢这样的路线。
也许这是因为淘汰赛已经改变(作为接受的答案是旧的),但今天,我不相信这是必要的(再)。 您可以轻松地测试淘汰赛视图模型。 所有我需要做的是设置全局ko
在我的测试变量:
global.ko = require('../../Website/Scripts/knockout-3.4.0.js');
在此之后,你可以运行测试和往常一样:实例化视图模型,对其执行任何操作,并断言。
我写多一点吧,但在本质上,这对我的作品:
global.ko = require('../../Website/Scripts/knockout-3.4.0.js');
var MyViewModel = require('../../Website/Scripts/myViewModel.js').MyViewModel;
describe('MyViewModel', function() {
var viewModel;
beforeEach(function(){
viewModel = new MyViewModel();
});
describe('...', function() {
/* And so on */
});
});