我有一个项目,我想将测试从 rhino 转移到 nodejs(rhino 启动和加载 envjs 的时间太长)。这是能够前进之前的当前阻塞:
ExampleSingleton = new function () {
var something = someFunction () {/*Does something*/}
$(window).bind('resize', something);
}();
这提示窗口没有被定义——我不知道如何获得我在我写的 shell (#!/usr/bin/env node) 脚本中创建的“窗口”(见下文,请原谅)困惑,因为我已经到了“尝试任何事情”的地步)。
var dom = require("jsdom").jsdom()
var window = global.window = dom.createWindow();
global.jQuery = require("jQuery");
global.$ = global.jQuery;
....
require("path/to/file"); //This is where it breaks, before the tests even start
我也尝试过读入和求值,但这并没有太大帮助,当然错误被掩盖了,因为它是一个匿名函数。
我是不是在尝试做不可能的事情?或者我可以做一个非常简单的浏览器友好的事情来让它工作吗?
最佳答案
您是否考虑过使用 PhantomJS而不是 Node ?
PhantomJS is a headless WebKit with JavaScript API. It has fast and native support for various web standards: DOM handling, CSS selector, JSON, Canvas, and SVG.
PhantomJS is an optimal solution for fast headless testing, site scraping, pages capture, SVG renderer, network monitoring and many other use cases.
因为它是一个真正的浏览器,所以您不需要 jsdom 或 envjs。 JavaScript continuous testing with QUnit, PhantomJS and Powershell可能会帮助您入门。
关于javascript - 在 Node 中运行浏览器javascript单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7760773/