如何使用jest.spyOn函数测试另一个文件中的功能

时间:2019-06-17 07:50:39

标签: node.js jestjs spyon

我正在尝试运行测试用例以测试Web服务玩笑的入口点 运行单元测试时,我面临一个问题。 无法监视异步函数,因为它是属性而不是函数。

我正在尝试测试是否在server.js文件中调用了运行功能

入口文件如下所示。


    import config from 'config';

    export default async function run() {
      try {
       /*
         some code
       */
      } catch (err) {
        process.exit(1);
      }
    }

    run();

测试文件如下所示


    import run from '../server';
    describe('server-test', () => {
    it('run', async () => {
        const start = require('../server');
        const spy = jest.spyOn(start, run);
        await run();
        expect(spy).toBeCalled();
      });
    });

测试应该可以正常运行, 但在运行此测试时出现错误

Cannot spy the async function run() {

    try {
            /*
             some code.
            */
          } catch (err) {
            process.exit(1);
          }
        } property because it is not a function; undefined given instead

1 个答案:

答案 0 :(得分:0)

我花了很长时间研究这个错误,并在以下文章中结束了 How to spy on a default exported function with Jest?

因此,在不放弃默认关键字(即ES 6皮棉要求)的情况下,唯一的解决方案是使用“默认”一词代替“运行”。

使用这种方式。

const spy = jest.spyOn(start,'default');

应该可以。