Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 模块内单个函数的Jest Mock实现_Javascript_Unit Testing_Jestjs - Fatal编程技术网

Javascript 模块内单个函数的Jest Mock实现

Javascript 模块内单个函数的Jest Mock实现,javascript,unit-testing,jestjs,Javascript,Unit Testing,Jestjs,大家好,我只是想用jest来开我的image min模块的玩笑,我遇到的问题是,当使用imagemin时,它会在一个子进程中创建自己的tmp文件夹,因为我使用的是模拟fs,所以它只会破坏路径。所以我只想让模块中的一个函数返回一个预先确定的结果,然后传递给另一个函数 到目前为止,在我的玩笑里 it('Should compress jpg', () => { expect.assertions(1); let mock = jest.fn(); mock.mockRe

大家好,我只是想用jest来开我的image min模块的玩笑,我遇到的问题是,当使用imagemin时,它会在一个子进程中创建自己的tmp文件夹,因为我使用的是模拟fs,所以它只会破坏路径。所以我只想让模块中的一个函数返回一个预先确定的结果,然后传递给另一个函数

到目前为止,在我的玩笑里

it('Should compress jpg', () => {
    expect.assertions(1);
    let mock = jest.fn();
    mock.mockReturnValueOnce(true);
    utility.compress = mock;

    let opts = {};
    let dest = './tmp/dest/img';
    let file = path.join(dest, 'jpeg_img.jpg');

    return utility.imageCompress(['./dummy_data/img/*.jpg'], dest, opts)
      .then(data => {
        expect(data).toEqual([]);
        expect(fs.existsSync(file)).toBe(true);
        expect(fs.statSync('./dummy_data/img/jpeg_img.jpg').size)
          .toBeLessThan(fs.statSync(file).size);
      });
  });
因此,
实用程序.imageCompress
调用
压缩函数

我正在导出函数,但仍然得到
utility.compress.mockImplementation不是函数


任何帮助都会很好,谢谢

我不确定你现在是否解决了这个问题,因为已经过去2年了。您是否检查了utility.imageCompress方法是否真的调用了compress?压缩是实用程序的一个可公开访问的成员,而不是闭包中私有函数的引用?