【问题标题】:Node.js unit test case using mocha使用 mocha 的 Node.js 单元测试用例
【发布时间】:2018-02-01 06:22:31
【问题描述】:

我有一个具有功能的myfunctions.js 文件

function lineObject(year, arrest, primary_Type, Description){
  this.year = year;
  this.arrest = arrest;
  this.primary_Type = primary_Type;
  this.Description = Description;
}

module.exports={
   lineObj : lineObject()
};

我的测试用例如下所示

    var chai = require('chai');
    var expect = chai.expect;
    const myfunction = require("../myfunctions");
    const lineObject = myfunction.lineObj;
    describe("Test suit", function(err) {
it("Test the fulsh option", function() {
     
  var retobj= lineObject('2017','yes','yes','tes');

       expect(retobj).to.have.property('year');
    });
});

但是当我运行我的测试时,它会抛出错误TypeError: lineObject is not a function

有什么建议

【问题讨论】:

  • 你在myfunctions.js中使用module.export导出模块吗?
  • 我已经更新了帖子..我正在使用modile.export
  • 您没有导出函数。您正在导出调用lineObject() 的结果,即undefined。这只是一个错字。请删除您的问题,因为仅由拼写错误引起的问题将被关闭和删除。

标签: javascript node.js mocha.js chai node-modules


【解决方案1】:

您没有正确导出lineObj 函数,而是调用它并将结果(将是undefined)分配给lineObj 属性。

您可以通过分配函数本身来修复

module.exports = {
    lineObj: lineObject
}

进一步查看您的代码,您似乎期望lineObj() 会为您提供一些回报,但根据您当前的实现,这些回报是不会的。您实际上需要 return 一些东西才能使其正常工作,例如

function lineObject() {
    return {
       ...
    };
}

根据您的导出方式,您可以使用return this 逃脱,这将为您提供对您导出回来的对象的引用(通用链接模式)......但我怀疑这是否真的是您想要做的。

【讨论】:

    猜你喜欢
    • 2018-11-05
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    相关资源
    最近更新 更多