我有一些我想测试的未导出功能。在JavaScript中,我将使用rewire。为了使用rewire测试TypeScript,请将Optional
调用指向发出的JavaScript文件而不是TypeScript文件。
但是,我正在使用webpack编译我的TS,所以在我的tsconfig.json中,我有rewire()
,并且没有发出要重布线的文件。
如何测试我的未导出功能?
答案 0 :(得分:0)
我想出了一个比理想情况要好但比出口要好的解决方法。
jest.config.js
module.exports = {
// ...
globals: {
TEST: true,
// ...
}
};
global.d.ts
export {};
declare global {
const TEST: boolean;
// ...
}
webpack.config.js
const { DefinePlugin } = require('webpack');
module.exports = {
// ...
plugins: [
new DefinePlugin({ TEST: 'false' })
]
};
my-module.ts
function myNonExportedFunction() {
// ...
}
if (TEST) {
module.exports.myNonExportedFunction = myNonExportedFunction;
}
__ tests __ / module.ts
const { myNonExportedFunction } = require('../my-module');
test('myNonExportedFunction', () => {
// ...
});
此方法的两个缺点是:
您将在生产代码中包含最少的测试代码(尽管webpack可以基于常量删除代码)
您仍然会丢失未导出功能的强类型输入,尽管无论如何您都会丢失重新连接的类型安全性