期望变量为空或布尔值

问题描述 投票:0回答:2

我正在使用 Jest 为 Node.js 后端开发一些测试,我需要检查来自第三方的一些值。在某些情况下,这些值可以是

boolean
null

现在我正在检查适合该情况的变量:

expect(`${variable}`).toMatch(/[null|true|false]/);

有没有更好的方法来使用 Jest 内置函数来检查它们?

javascript testing ecmascript-6 jestjs
2个回答
13
投票

那又如何

expect(variable === null || typeof variable === 'boolean').toBeTruthy();

您可以使用 expect.extend 将其添加到内置匹配器中:

expect.extend({
    toBeBooleanOrNull(received) {
        return received === null || typeof received === 'boolean' ? {
            message: () => `expected ${received} to be boolean or null`,
            pass: true
        } : {
            message: () => `expected ${received} to be boolean or null`,
            pass: false
        };
    }
});

并像这样使用它:

expect(variable).toBeBooleanOrNull();

0
投票

这是使用匹配器表达条件的另一种方法(可以与扩展方法结合使用,如@bugs的答案中所建议的)

expect([expect.any(Boolean), null]).toContainEqual(variable);
© www.soinside.com 2019 - 2024. All rights reserved.