【问题标题】:Get an instance of TypeScript class?获取 TypeScript 类的实例?
【发布时间】:2017-04-22 14:31:38
【问题描述】:

我有一些遗留代码想要开始单元测试。这是一个这样的类:

export class Controller {
    private something: any;

    constructor() { this.something = true; }

    public getSomething(): any { return this.something; }
}

尝试像这样使用 Mocha 对其进行单元测试:

import Controller from '../../src/Controller';

describe('Controller', () => {
    let subject: any;

    beforeEach( () => {
        subject = new Controller(); // compiler complains here
    });

    describe('getOptions()', () => {
        it('should get something', () => {
            let result: any = subject.getOptions();
            if (typeof result !== 'object') {
                throw new Error('Expected object but got ' + result);
            }
        });
    });
});

编译器抱怨:

[ts] 不能对类型缺少调用的表达式使用“new”或 构造签名。

如何获取 Controller 类的实例来运行测试?

【问题讨论】:

    标签: unit-testing typescript


    【解决方案1】:

    它不起作用,因为您尝试将 Controller 作为默认导出导入,而实际上它不是。

    试试:

    import {Controller} from '../../src/Controller';
    

    或:

    export default class Controller {
    

    您可以在 MDN 页面 here 上阅读有关导入的更多信息。

    【讨论】:

    • 非常好,第一个选项有效!我在哪里可以了解默认导出和非默认导出之间的区别?
    • @montrealist 我添加了一个指向答案的链接以供将来参考。 :)
    猜你喜欢
    • 2021-03-20
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 2019-06-10
    • 2021-02-19
    • 2016-04-05
    • 2021-08-26
    相关资源
    最近更新 更多