【发布时间】:2019-06-04 13:52:45
【问题描述】:
在一个 JavaScript ES6 模块中,可能有许多小的、易于测试的函数应该被测试,但不应该被导出。如何在不导出模块的情况下测试模块中的函数? (不使用Rewire)。
【问题讨论】:
-
如果它们没有被导出,那意味着它们不是public,对吧?我假设在这种情况下,它们被公开导出的函数/类/任何东西使用,因此您可以通过公开可用的内容来测试它们。
-
@AlexSzabó 是的,但我正在寻找一种直接测试它们的方法。使用它们的公共函数(在我的例子中)是一个复杂的生成器函数,因此很难通过公共函数测试它们
-
首先,很抱歉我不能以任何有意义的方式帮助你:( - 但是仅仅为了测试而公开私有函数不是一个好的做法。如果函数足够通用,您可以通过显式单元测试公开它们,但如果它们不是,那么您正在使您的测试与实现细节高度耦合,因此它们可以(例如)在重构时中断,而无需任何真正的改变行为。
-
@AlexSzabó 是的,我完全同意你的看法。感谢您的输入!由于我必须为此项目使用特别复杂的工具,这可能只是我遇到的一个问题。
-
我也需要想办法做到这一点。通过执行公共方法来测试私有方法的功能并不是一个非常有意义的单元测试。该公共方法可能会调用大量私有方法,当它失败时,您将不知道在哪里或为什么。
标签: javascript ecmascript-6 jestjs es6-modules