我理解module.export并要求mannner:
Requiring external js file for mocha testing
尽管它是一个可用的模块,但我觉得这种方式是不方便的,因为我现在打算做的是测试文件中的一个代码.
app.js
- 'use strict';
- console.log('app.js is running');
- var INFINITY = 'INFINITY';
test.js
- var expect = require('chai').expect;
- require('./app.js');
- describe('INFINITY',function()
- {
- it('INFINITY === "INFINITY"',function()
- {
- expect(INFINITY)
- .to.equal('INFINITY');
- });
- });
app.js正在运行
然后
ReferenceError:未定义INFINITY
这不是我的预期.
我不想使用module.export并写入
var app = require(‘./ app.js’);
和
app.INFINITY和app.anyOtherValue为测试代码中的每一行.
必须有一个聪明的方式.你可以告诉我吗?
谢谢.
解决方法
更新:最终答案:
我以前的答案是无效的,因为eval(code);对变量无效.
幸运的是,节点有一个强大的方法 – vm
但是,根据文件,
vm模块有许多已知问题和边缘情况.如果遇到问题或意外行为,请参阅GitHub上的公开问题.一些最大的问题如下所述.
所以,虽然这在表面上起作用,但需要特别注意这样的目的,例如测试…
- var expect = require('chai')
- .expect;
- var fs = require('fs');
- var vm = require('vm');
- var path = './app.js';
- var code = fs.readFileSync(path);
- vm.runInThisContext(code);
- describe('SpaceTime',function()
- {
- describe('brabra',function()
- {
- it('MEMORY === "MEMORY"',function()
- {
- expect(MEMORY)
- .to.equal('MEMORY');
- })
- });
- });