当前位置: 首页 > 面试题库 >

如何访问和测试node.js模块中的内部(非导出)功能?

巫马阳飙
2023-03-14
问题内容

我试图弄清楚如何在nodejs(最好是使用mocha或jasmine)中测试内部(即不导出)功能。而且我不知道!

假设我有一个类似的模块:

function exported(i) {
   return notExported(i) + 1;
}

function notExported(i) {
   return i*2;
}

exports.exported = exported;

和以下测试(摩卡):

var assert = require('assert'),
    test = require('../modules/core/test');

describe('test', function(){

  describe('#exported(i)', function(){
    it('should return (i*2)+1 for any given i', function(){
      assert.equal(3, test.exported(1));
      assert.equal(5, test.exported(2));
    });
  });
});

有什么方法可以对notExported功能进行单元测试而不实际导出功能,因为它不是要公开的?


问题答案:

该联控模块是绝对的答案。

这是我的代码,用于访问未导出的函数并使用Mocha对其进行测试。

application.js:

function logMongoError(){
  console.error('MongoDB Connection Error. Please make sure that MongoDB is running.');
}

test.js:

var rewire = require('rewire');
var chai = require('chai');
var should = chai.should();


var app = rewire('../application/application.js');


logError = app.__get__('logMongoError');

describe('Application module', function() {

  it('should output the correct error', function(done) {
      logError().should.equal('MongoDB Connection Error. Please make sure that MongoDB is running.');
      done();
  });
});


 类似资料:
  • Functions micropython.const(expr) Used to declare that the expression is a constant so that the compile can optimise it. The use of this function should be as follows: from micropython import const CO

  • 问题内容: 我已经在工作,但是当我尝试从其他模块调用它时,是否会不确定? app.js Consumer.js 问题答案: 由于app.js通常是应用程序中的主要初始化模块,因此通常会同时初始化Web服务器和socket.io并加载应用程序所需的其他内容。 因此,与其他模块共享的一种典型方法是将它们传递给该模块的构造函数中的其他模块。那会像这样工作: 然后,在consumer.js中: 或者,如果

  • 问题内容: 我有一个JavaScript文件,由加载。 我的问题是:在var中是一个空对象,而函数中的语句是node.js全局对象的影子。我知道关键字在功能上有所不同,但我不明白为什么先不等于全局,而在功能上等于全局。 node.js如何注入到函数范围内,为什么不将其注入模块范围内? 问题答案: 您必须了解以下一些基本事实才能弄清情况: 在Node模块的顶级代码中,等效于。那是您看到的空对象。 当

  • 问题内容: 我正在尝试使用Intern测试框架来自动测试通过node.js和StrongLoop实现的简单REST API。StrongLoop提供了一个浏览器网页,我已使用该网页来验证是否已实现REST API,并且可以从Postman手动测试该API。 我尝试使用intern.js进行的第一个API测试将检索集合中媒体对象的数量。HTTP方法为GET,URL为,响应为{“ count”:2}。

  • 问题内容: 我有一个要测试使用的应用程序,但是有一些问题。我的目录结构如下: 我想测试中的和模块,然后尝试做 但是在我不能导入我的目录包。 我该如何工作? 基本上,我想从测试的应用程序与和单独的目录。 我尝试将追加到,但是当我从导入时,我仍然从unittest得到一个。 编辑:我的导入和声明是: 和回溯: 问题答案: 要做的一件非常错误的事情是在上附加一个相对路径。如果要确定路径,请进行以下操作: