首页 > 解决方案 > JEST expect.anything() 或 null

问题描述

expect.anything()不适用于null或未定义。无论如何我可以在下面的代码中包含对 null 或 expect.anything() 的检查吗?在这里,auth可以是anythingnull

const transactionsListResponseKey = {
  id: expect.anything(),
  amount: expect.anything(),
  currency: expect.anything(),
  auth: expect.anything()
}

标签: node.jsunit-testingjestjs

解决方案


您可以使用jest-extended的.toBeOneOf([members])断言 API与expect.anything()

.toBeOneOf在检查一个值是否是给定数组的成员时使用。

import 'jest-extended';

describe('69198224', () => {
  test('should pass', () => {
    const auth1 = 'a';
    const auth2 = null;
    const auth3 = 1;
    const auth4 = {};
    const auth5 = undefined;
    const auth6 = [];
    const auth7 = () => {};
    expect(auth1).toBeOneOf([null, expect.anything()]); // pass
    expect(auth2).toBeOneOf([null, expect.anything()]); // pass
    expect(auth3).toBeOneOf([null, expect.anything()]); // pass
    expect(auth4).toBeOneOf([null, expect.anything()]); // pass
    expect(auth6).toBeOneOf([null, expect.anything()]); // pass
    expect(auth7).toBeOneOf([null, expect.anything()]); // pass

    expect(auth5).toBeOneOf([null, expect.anything()]); // fail
  });
});

推荐阅读