0

我正在使用 ResembleJS 进行图像比较。当我在独立脚本中运行它时,我可以让它运行。这是代码:

    var compareImages = require('resemblejs/compareImages');
    var fs = require('fs');
    var path = require('path');
    // The parameters can be Node Buffers
    // data is the same as usual with an additional getBuffer() function
    async function getDiff() {
      var img = path.join(__dirname, 'small.jpg');
      const data = await compareImages(
        fs.readFileSync(img),
        fs.readFileSync(img)
      );
      console.log(data);
      fs.writeFileSync('./output.png', data.getBuffer());
    }

    getDiff();

一切都按预期工作。

但是,当我在 jest 框架的测试中运行比较时,它会挂起并最终超时。起初我以为它可能只是运行得很慢,所以我开玩笑地将我的最大超时设置为 1 分钟。还是失败了。所以我将我的测试图像设置为 1 像素,所以这是最简单的测试。还是说不完。

从带有节点 8.9.4 的 docker 容器运行(来自 docker hub node:8)。运行 jest 22.0.4。

其他人在运行这两个方面有问题吗?

我知道 Resemblejs 用 Jest 运行测试,所以不确定是什么导致了这个问题。

4

2 回答 2

0

你能发布你的测试代码吗?

您确定要从您的test街区返回一些东西吗?为了使测试不挂起,您需要返回一个承诺,该承诺将在超时之前解决。下面两个例子

test("test", () => {
    // test is done when writeFile resolves
    return new Promise((resolve, reject) => {

        fs.writeFile("path", "encoding", (err) => {
            if (err) {
                reject(err);
            } else {
                resolve();
            }
        });

    });

});

test("test", async function () {
    // test is done after the assertion
    const result = await fetch();
    expect(result).toBe(); // test;


});
于 2018-01-09T17:05:34.853 回答
0

我在使用 Jest、React 和 Docker 进行慢速测试时遇到了类似的问题(但我没有使用 Resemblejs)。

我在Github上找到了解决方案:

对我来说,解决方案只是添加"roots": ["./src"]到 jest.config.js

于 2019-02-26T19:10:42.620 回答