使用’import’js文件进行JavaScript测试(mocha)

前端之家收集整理的这篇文章主要介绍了使用’import’js文件进行JavaScript测试(mocha)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我理解module.export并要求mannner:

Requiring external js file for mocha testing

尽管它是一个可用的模块,但我觉得这种方式是不方便的,因为我现在打算做的是测试文件中的一个代码.

例如,我有一个文件中的代码

app.js

  1. 'use strict';
  2. console.log('app.js is running');
  3. var INFINITY = 'INFINITY';

现在,我想在一个文件中测试这个代码

test.js

  1. var expect = require('chai').expect;
  2.  
  3. require('./app.js');
  4.  
  5.  
  6. describe('INFINITY',function()
  7. {
  8. it('INFINITY === "INFINITY"',function()
  9. {
  10. expect(INFINITY)
  11. .to.equal('INFINITY');
  12. });
  13. });

测试代码执行app.js,所以输出

app.js正在运行

然后

ReferenceError:未定义INFINITY

这不是我的预期.

我不想使用module.export并写入

var app = require(‘./ app.js’);

app.INFINITY和app.anyOtherValue为测试代码中的每一行.

必须有一个聪明的方式.你可以告诉我吗?

谢谢.

解决方法

更新:最终答案:

我以前的答案是无效的,因为eval(code);对变量无效.

幸运的是,节点有一个强大的方法 – vm

http://nodejs.org/api/vm.html

但是,根据文件,

vm模块有许多已知问题和边缘情况.如果遇到问题或意外行为,请参阅GitHub上的公开问题.一些最大的问题如下所述.

所以,虽然这在表面上起作用,但需要特别注意这样的目的,例如测试…

  1. var expect = require('chai')
  2. .expect;
  3.  
  4. var fs = require('fs');
  5. var vm = require('vm');
  6. var path = './app.js';
  7.  
  8. var code = fs.readFileSync(path);
  9. vm.runInThisContext(code);
  10.  
  11. describe('SpaceTime',function()
  12. {
  13. describe('brabra',function()
  14. {
  15. it('MEMORY === "MEMORY"',function()
  16. {
  17. expect(MEMORY)
  18. .to.equal('MEMORY');
  19. })
  20. });
  21.  
  22. });

毕竟;在这种情况下我发现的最好的方法是将测试摩卡代码写在同一个文件中.

猜你在找的JavaScript相关文章