您好我是新的JavaScript单元测试,我使用的是Mocha.js和Chai.js
我想要做的只是弄清楚如何在单独的js文件中检查全局变量的值。这是我的代码
这是main.js文件(要测试的代码)只有我想要测试的变量。
//main.js
var foo = 9;
这是我的测试文件
var assert = require("assert")
var expect = require('chai').expect
var fs = require("fs")
var vm = require("vm")
function include(path){
var code = fs.readFileSync(path,'utf-8');
vm.runInThisContext(code,path);
}
describe('Global', function(){
include('lib/main.js');
it('Should check if value is matching', function(){
expect(foo).to.equal(9);
});
});
同样,我是JavaScript中单元测试的新手。任何帮助将不胜感激。我收到的错误是foo is not defined
,它告诉我它无法访问变量,那么我该如何访问它?提前感谢您的帮助。
答案 0 :(得分:1)
您的全局对象通常为window
全球var foo = "test";
与window.foo = "test";
或window['foo'] = "test";
当mocha在节点中运行时未定义窗口,但此blog post使用“this”与自调用函数结合以获得相同的结果。
答案 1 :(得分:1)
var foo = 9;
未声明全局变量,它声明了一个局部变量。在Node.js中,在模块的最外层范围内声明的局部变量将是该模块的本地变量。
如果要测试在另一个文件中声明的局部变量的值,最好的办法是将该文件的内容读入一个字符串(或许使用fs.readFileSync
),然后{{1}字符串,应该在当前范围内定义变量。
只有在文件的最外层范围内声明局部变量时,才会有效。例如,如果它是函数内部的局部变量,那么你运气不好(除非你想做一些粗略的字符串解析,这会扩展理智的范围)。