如何测试Jest调用中的包装是否正确跳过?

时间:2019-05-20 18:24:27

标签: javascript jestjs

这是对this question的跟进问题。

我有一个名为assertTruthy的Jest函数。 assertTruthy(msg, fn, args),需要一条消息,一个函数和一个参数,并且如果使用该参数调用该函数时返回的内容为真,则应该通过,否则返回失败。

我想扩展它以支持Jest的onlyskip

这是我写的:

assertTruthy.skip = ({
  message = '',
  fn = undefined,
  args,
} = {}) => {
  it.skip(message, () => {
    expect(fn(args)).toBeTruthy();
  });
};

assertTruthy.only = ({
  message = '',
  fn = undefined,
  args,
} = {}) => {
  it.only(message, () => {
    expect(fn(args)).toBeTruthy();
  });
};

我将如何测试这些功能?

这是我尝试过的方法,可以起作用,但是我不确定这是否正确。

describe('skip()', () => {
  test('it skips the function', () => {
    it.skip = jest.fn();
    assertTruthy.skip({
      message: 'something',
      fn: () => true,
      args: undefined,
    });
    expect(it.skip).toHaveBeenCalledTimes(1);
  });
});

2 个答案:

答案 0 :(得分:1)

这看起来很公平,您的assertTruthy skiponly调用了Jest的it skiponly方法。

您可能想断言它还会使用您期望使用toHaveBeenCalledWith的参数来调用它们。

答案 1 :(得分:0)

能否请您详细说明一下您想要实现的目标,而我为什么不能正确地解释为什么要扩展Jest skip和仅实现已测试目标的方法。

但是,如果您只想根据是否为真/假的参数来测试是否未使用auth调用/执行某个函数,那么您做对了。