TypeScript - 使用带有单元测试的模块或类?

Posted

技术标签:

【中文标题】TypeScript - 使用带有单元测试的模块或类?【英文标题】:TypeScript - Use modules or classes with unit testing in mind? 【发布时间】:2017-01-17 12:19:21 【问题描述】:

哪种内容架构策略最适合在 TypeScript 中进行单元测试?创建模块或类?

module: moduleX.method1(); // 导出的方法

class: var x = moduleX.method1(); // 公共方法

【问题讨论】:

不应该根据测试来决定。模块和类只是不同。例如,您不能扩展模块(不像使用类那样容易)。有些事情最好用模块完成,有些事情用类更好。此外,没有矛盾,您可以在模块中拥有类。 【参考方案1】:

最好在 TypeScript 中考虑单元测试

如果你有一个不依赖于类中本地状态的函数......那么它应该只是一个函数。可以foo()时不需要new SomeClass().foo()

在这里,您可以使用命名空间将不同的功能很好地整合到一个对象中:https://basarat.gitbooks.io/typescript/content/docs/project/namespaces.html,您会得到类似Utils.foo()的东西

请注意,我希望您只创建一个 javascript 模块 而不是命名空间:https://basarat.gitbooks.io/typescript/content/docs/project/modules.html

最重要的是玩得开心 ?只要你对下一个开发者保持一致和体贴(离开 cmets / types)你就可以专注于业务逻辑。

【讨论】:

有趣,谢谢。就我而言,我正在开发一个绘图工具应用程序。我将所有东西都包装在一个带有变量的命名空间中,导出一个函数,并在调用时设置画布并为控件添加事件侦听器。然后调用其他函数并使用和更新共享变量。我想知道是否应该将其切换为一个类并改为使用属性而不是变量。 I'm wondering if I should switch this to a class instead and change to use properties instead of variables。我会:basarat.gitbooks.io/typescript/content/docs/tips/…

以上是关于TypeScript - 使用带有单元测试的模块或类?的主要内容,如果未能解决你的问题,请参考以下文章

使用 typescript/mocha 进行单元测试时找不到模块

在 Typescript 单元测试中模拟

TypeScript 中的单元测试 [关闭]

如何在没有 <reference> 的情况下在 TypeScript 中导入带有“Typings”的模块?

找不到模块“模块”-Rewire.js

ts-jest:TypeScript 类型错误被忽略