在没有导出的情况下测试打字稿模块

Posted

技术标签:

【中文标题】在没有导出的情况下测试打字稿模块【英文标题】:Testing typescript modules without exports 【发布时间】:2017-12-02 00:47:30 【问题描述】:

我正在处理遗留环境,并且我有包含模块或/和类的 Typescript 文件

class SomeClass 
    ...


module AndAModule 
    export namespace NestedNamespace 
        ...
    

请注意***模块/类中缺少“export”关键字。

我想使用 Jest 库测试“NestedNamespace”中的函数。但是,当我在测试文件中导入 Typescript 文件时:

var service = require("/path/to/file/SomeService.ts")

我无权访问 SomeService.ts 文件中定义的类或模块。如果在模块和类之前添加“export”关键字,我可以通过从 require 返回的对象访问它们,但这会破坏整个环境和其他文件,因为在此之后,模块和类不存在于生成的 outFile通过打字稿。

如何在不添加任何导出语句的情况下从文件中导入所需的模块?

【问题讨论】:

我面临同样的问题(几乎正好是 2 年后)。您找到解决方法了吗? 不幸的是我不再从事这个项目,我想我还没有找到解决方案:P 【参考方案1】:

如果您有一个未导出的函数,则导出的其他函数正在调用该未导出的函数。测试导出的方法,您将间接测试未导出的方法。

【讨论】:

以上是关于在没有导出的情况下测试打字稿模块的主要内容,如果未能解决你的问题,请参考以下文章

茉莉花间谍对进口模块(打字稿)

打字稿 - TS1192:模块没有默认导出

打字稿错误:模块'“.../node_modules/rxjs/Rx”'没有导出的成员'SubscriptionLike' [重复]

测试套件无法运行 - 找不到模块“打字稿”

开玩笑测试:在打字稿组件导入中找不到模块

解析 testcafe 打字稿测试中的模块