测试失败-ProductService不是构造函数

时间:2019-07-07 10:44:04

标签: javascript node.js mocha chai

我正在使用"chai": "^4.2.0","mocha": "^4.0.1"。我正在运行node --versionv10.15.3,我的目标是测试服务层:

我的ProductService.js如下所示:

class ProductService {

    constructor() {
        // constructor
    }

    async createOrUpdateProduct(dataArray) {
        return "done"
    }
}

module.exports = {
    ProductService
};

我的测试类ProductTestService.js如下所示:

const assert = require('chai').assert;

const ProductService = require('../Service/ProductService')


describe('Product model', () => {

    it('should add the test data with the Products Service to the Product table', async () => {
        let dataArr = "product data"
        let productServ = new ProductService()

        const res = await productServ.createOrUpdateProduct(dataArr)
        assert.isOk(res.length, dataArr.length);
    });

});

运行测试时,我得到:

enter image description here

关于为什么实例化不起作用的任何建议?

感谢您的答复!

1 个答案:

答案 0 :(得分:1)

代码

module.exports = {
    ProductService
};

是简写

module.exports = {
    ProductService: ProductService
};

这意味着,当您使用以下方式导入模块时

const ProductService = require('../Service/ProductService');

ProductService的值正是您导出的值,即具有属性ProductService的对象。

{
    ProductService: ProductService
}

要解决您的问题,请直接导出类(如果这是您要从模块中导出的唯一内容)

module.exports = ProductService;

如果您还想导出其他内容,则可以使用对象分解来导入

const { ProductService } = require('../Service/ProductService');