访问全局变量 JavaScript 单元测试

Access for global variables JavaScript unit testing

你好,我是新 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,它告诉我它无法访问该变量,那么我该如何访问它呢?预先感谢您的帮助。

你的全局对象通常是window

全局 var foo = "test";window.foo = "test";window['foo'] = "test";

相同

Window在node中mocha是运行时没有定义,但是这个blog post使用"this"结合自调用函数得到相同的结果。

var foo = 9;没有声明全局变量,它声明了一个局部变量。在 Node.js 中,在模块的最外层范围内声明的局部变量将是该模块的局部变量。

如果你想测试在另一个文件中声明的局部变量的值,最好的办法可能是将该文件的内容读入一个字符串(也许使用 fs.readFileSync),然后 eval() 字符串,应该在当前范围内定义变量。

只有在文件的最外层作用域中声明局部变量时才有效。例如,如果它是一个函数内的局部变量,那你就不走运了(除非你想做一些粗糙的字符串解析,这会超出理智的范围)。