首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用重线测试节点ES6模块-函数未定义

使用重线测试节点ES6模块-函数未定义
EN

Stack Overflow用户
提问于 2016-06-08 08:49:33
回答 1查看 3K关注 0票数 5

IIFE编辑:有人很快回答了这个问题,有人指出,在rewire documentation.注释中,我将模块封装在IIFEs中,因为我试图让节点停止抱怨在严格模式之外的块作用域声明。与使用IIFE(在严格模式下)不同,更简单的方法是在节点命令中使用--use-strict标志:

代码语言:javascript
复制
node --use-strict app.js

这样,您就可以在代码中正常使用ES6,并且仍然可以通过重新连接来访问它们。万岁!

我正在尝试测试我的节点ES6应用程序。更确切地说,我正在尝试测试一个不是从模块导出的模块中的函数。目前,我甚至无法在测试中定义该函数。正在尝试使用rewire来测试这个函数。

我不确定这是否可能是严格模式或使用ES6时出现的问题,但我似乎无法在网上找到任何解决方案的提示:

任何帮助都将不胜感激!

这是我的模块:

代码语言:javascript
复制
//myModule.js
(function(){
  'use strict';

  let myFunction = () => {
    return 'hello';
  };

})();

这是我的测试:

代码语言:javascript
复制
//myModule.spec.js
(function(){
  'use strict';

  let rewire = require('rewire');
  let myModule = rewire('./myModule.js');

  describe('app', () => {

    it('should do something', () => {

      let func = myModule.__get__('myFunction');
      expect(func).toBeDefined();

    });


  });

})();

这是我在目录上运行jasmine获得的输出:

代码语言:javascript
复制
Failures:

  1) app should do something
   Message:
     ReferenceError: myFunction is not defined
   Stacktrace:
     ReferenceError: myFunction is not defined
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-08 09:07:34

您正在包装代码的那些生命的导致了问题。它甚至在精细手册中被提到

函数内部的变量不能通过重新连接更改。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37697616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档