knockout.js退出浏览器测试并伪造窗外

时间:2011-12-07 02:23:26

标签: javascript dom knockout.js qunit

我正在尝试为我的视图模型编写单元测试,视图模型对knockout.js有很大的依赖性。我也在使用js.net从visual studio中的microsoft test runner运行qUnit测试。这样,当测试失败时,我可以取消构建。

我可以运行简单的测试但是只要我加载knockout.js我得到一个“ReferenceError:窗口没有定义(knockout-1.3.0beta.js,第5行)”显然窗口没有定义时我没有从浏览器运行测试。但是我只测试视图模型,窗口交互与我的测试无关。无论如何,我可以“伪造”或“模仿”窗口,以便我可以在无浏览器的环境中使用knockout.js。

2 个答案:

答案 0 :(得分:0)

我不太确定是否有快捷解决方案但通常在这种情况下你需要有一个无头浏览器来测试。因为Knockoutjs与DOM和事件紧密集成,所以我希望你需要一个可以模拟整个浏览器结构的框架。

Zombie.js就是一个。它需要Node.js进行设置,但非常出色。

答案 1 :(得分:0)

您可以使用phantomJS和Jasmine的组合来测试您的KnockoutJS视图模型。最终的结果是这样的,它的幻影有多快:

$ phantomjs run_jasmine_test.coffee TestRunner.html
 Starting...

 Finished
 -----------------
 1 spec, 0 failures in 0.013s.

 ConsoleReporter finished

基本步骤:

  • 使用Jasmine,为您的代码编写规范
  • 创建测试运行器文件,为每个spec文件添加行
  • 运行phantomJS并指示其阅读测试运行器。

有关详细信息和分步说明,请查看我最近就此主题撰写的blog post