【问题标题】:Import Typescript class into Jasmine tests (<type> is not a constructor error)将 Typescript 类导入 Jasmine 测试(<type> 不是构造函数错误)
【发布时间】:2016-10-15 21:14:35
【问题描述】:

如果我在打字稿文件中定义了一个类 (DateTimeConverter.ts):

export class DateTimeConverter{
    constructor(){
    }
    //Other methods
}

然后我想导入这个类在 Jasmine 中做一些单元测试,所以在我的规范中我导入它:

var DateTimeConverter = require('../path/to/DateTimeConverter');

为什么我不能在我的单元测试中使用那个类:

var timeConverter = new DateTimeConverter();

当我运行我的测试时,Jasmine 给出了一个错误:

TypeError: DateTimeConverter 不是构造函数

如何将这个类加入我的测试,以便测试它的功能?

【问题讨论】:

    标签: javascript unit-testing typescript jasmine


    【解决方案1】:

    所以我想通了这一点,并认为我会发布答案,以防其他人被困在这个问题上。 当您导入库时,您(可能很明显)没有直接访问该类的权限,而是拥有它的句柄:

    var DateTimeConverterLib = require('../path/to/DateTimeConverter');
    

    然后你可以实例化它:

    var timeConverter = new DateTimeConverterLib.DateTimeConverter();
    

    然后像往常一样调用它上面的任何函数:

    var result = timeConverter.MyAwesomeTimeFunction();
    

    像魅力一样工作,我所有的测试现在都通过了:)

    希望对某人有所帮助

    【讨论】:

    • 是否需要使用 require 来导入模块?可以用import { Class } from ".path/to/my/class.ts"完成吗
    猜你喜欢
    • 2023-04-03
    • 2021-09-04
    • 2018-02-24
    • 1970-01-01
    • 2019-06-11
    • 2016-05-16
    • 1970-01-01
    • 2022-01-24
    • 2019-12-17
    相关资源
    最近更新 更多