如何使用webpack编译仅测试代码

时间:2018-01-03 18:44:43

标签: javascript unit-testing webpack

我有一些私有方法,我想编写单元测试。但是,由于这些是私有方法,因此不会导出它们。

This article显示了如何使用grunt将代码包装在注释中,如果您正在编译生产,则此代码将被排除在编译之外。

Webpack有类似的东西吗?基本上我想要一些东西,所以我可以做点像

/* test-only */
export {_myPrivateMethod};
/* end-test-only */

此代码将从最终编译中排除,但在运行测试时将包括在内。

1 个答案:

答案 0 :(得分:0)

理想情况下,您不会直接测试私有函数。最好通过公共API执行这些功能来获得这些功能的覆盖范围。 http://www.peterprovost.org/blog/2012/05/31/my-take-on-unit-testing-private-methods

但是,如果您真的想要,可以执行生产构建以优化您想要省略的代码。它看起来像这样:

if (process.env.NODE_ENV !== 'production') {
    // this code will not appear in a production build
}

这是有效的,因为webpack在您进行生产构建时会自动定义process.env.NODE_ENV,并且会在捆绑包之外进行优化。如果你想获得想象力,可以使用DefinePlugin定义自己的变量并进行类似的检查。

您可以在此处阅读更多内容:https://webpack.js.org/guides/production/和此处:https://webpack.js.org/plugins/define-plugin/