Jest.js expect(...). toBeBeBefore不是函数

fumotvh3  于 2023-11-15  发布在  Jest
关注(0)|答案(1)|浏览(148)

我一直在阅读这本书“测试JavaScript应用程序”。目前我卡在 *3.2.3.自定义匹配器 *。使用Jest扩展模块,但它不工作。

// inventoryController.js

const inventory = new Map();

const getInventory = () => {
    const contentArray = Array.from(inventory.entries());
    const contents = contentArray.reduce((contents, [name, quantity]) => {
        return {...contents, [name]: quantity};
    }, {});

    return {...contents, generatedAt: new Date(new Date().setFullYear(3000))};
}

const addToInventory = (item, quantity) => {
    if(!+quantity) throw new Error('Quantity must be a number');
    const currentQuantity = inventory.get(item) || 0;
    const newQuantity = currentQuantity + quantity;
    inventory.set(item, newQuantity);
    return newQuantity;
}

module.exports = {
    inventory,
    addToInventory,
    getInventory
}

个字符
现在在测试用例generatedAt in the past中得到错误。
我试图通过阅读jest-extended的官方文档来解决它,但似乎也不起作用。我认为可能是版本问题或配置文件有问题。让我分享它的细节。

// jest.config.js

module.exports = {
    testEnvironment: "node",
    setupFilesAfterEnv: ["jest-extended"]
    // globalSetup: "./globalSetup.js",
    // globalTeardown: "./globalTeardown.js"
};

f4t66c6m

f4t66c6m1#

根据the documentation,您还应该在setup文件中扩展expect匹配。

// testSetup.js

// add all jest-extended matchers
import * as matchers from 'jest-extended';
expect.extend(matchers);

字符串
setupFilesAfterEnv应指向此安装文件,而不是指向jest-extended

module.exports = {
    testEnvironment: "node",
    setupFilesAfterEnv: ["./testSetup.js"] // <-- link to setup file
};

相关问题