Typescript 导入 module.exports 子函数

Typescript import module.exports sub function

我正在使用 mocha 来测试一个函数,但在 运行 测试文件时遇到错误。

文件结构如下

server
|-test
|  |-customer.test.ts
|-customer.js

这是customer.js文件函数

module.exports = (instance) => {
   instance.validate = async (ctx) => {
      // some code here 
   }
}

这是 mocha 测试用例文件customer.test.ts

const instance =  require("../customer")

/* eslint-disable no-undef */
describe('customer', () => {
  describe('/POST customers', () => {
    it('Create Buy customer', (done) => {
      instance.validate({        
      })
      done();

    });
  })
});

但是当我 运行 使用命令 mocha .\customer.test.ts 文件时,它显示以下错误

TypeError: instance.validate is not a function

如何让上面的函数执行?

您导出的内容与导入的内容不匹配。问题(可能)是出口。你拥有的是:

module.exports = (instance) => {
   instance.validate = async (ctx) => {
      // some code here 
   }
}

导出一个函数,调用时会向传递给它的对象添加一个validate方法。它 使用 validate 方法导出对象,看起来像这样:

module.exports = {
   validate: async (ctx) => {
      // some code here 
   },
};

所以你需要修复导出(我怀疑这是问题所在),或者(如果导出真的是为了这样做),通过传入一个对象然后检查它来测试它实际做了什么,调用后,对象有一个 validate 方法。