javascript - 在 Node 中运行浏览器javascript单元测试

标签 javascript node.js

我有一个项目,我想将测试从 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/

相关文章:

javascript - 页面加载时自动打开日期选择器

javascript - 为什么 `new Array()` 和 `Array()` 在 Javascript 中的行为相同?

javascript - 简单的 node.js 服务器没有错误处理失败的请求

node.js - NodeJS - 为登录或未登录的用户显示不同的内容

javascript - 从另一个 json 数组项中查找数组项的索引

javascript - 替换通过 Chrome 扩展程序输入的字母?

javascript - 一个简单的 Nodejs MySQL 查询

node.js - 为什么我得到 node-sqlite3 SQLITE_BUSY

javascript - 如何制作删除 div 所在位置的按钮?

javascript - 如果数组没有元素,如何使条件为真?