Jestjs 使用Jest测试命令行工具

Jestjs 使用Jest测试命令行工具,jestjs,Jestjs,我有一个将脚本作为命令公开的应用程序。如何使用jest测试此脚本。更具体地说,如何使用jest执行此脚本,然后应用相应的期望值?脚本不导出任何函数,它只包含一组按顺序执行的代码行。您可以将代码包装在main函数中,将其导出,并仅在从命令行执行模块时运行该函数,然后为其编写测试。一个简化的例子可以是: // script.js const toUpper = text => text.toUpperCase(); module.exports.toUpper = toUpper; // I

我有一个将脚本作为命令公开的应用程序。如何使用jest测试此脚本。更具体地说,如何使用jest执行此脚本,然后应用相应的期望值?脚本不导出任何函数,它只包含一组按顺序执行的代码行。

您可以将代码包装在
main
函数中,将其导出,并仅在从命令行执行模块时运行该函数,然后为其编写测试。一个简化的例子可以是:

// script.js
const toUpper = text => text.toUpperCase();
module.exports.toUpper = toUpper;

// It calls the function only if executed through the command line
if (require.main === module) {
  toUpper(process.argv[2]);
}
然后从测试文件导入
toUpper
函数

// script.test.js
const { toUpper } = require('./script');

test('tranforms params to uppercase', () => {
  expect(toUpper('hi')).toBe('HI');
});