这是对this question的跟进问题。
我有一个名为assertTruthy
的Jest函数。 assertTruthy(msg, fn, args)
,需要一条消息,一个函数和一个参数,并且如果使用该参数调用该函数时返回的内容为真,则应该通过,否则返回失败。
我想扩展它以支持Jest的only
和skip
。
这是我写的:
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);
});
});
答案 0 :(得分:1)
这看起来很公平,您的assertTruthy
skip
和only
调用了Jest的it
skip
和only
方法。
您可能想断言它还会使用您期望使用toHaveBeenCalledWith
的参数来调用它们。
答案 1 :(得分:0)
能否请您详细说明一下您想要实现的目标,而我为什么不能正确地解释为什么要扩展Jest skip和仅实现已测试目标的方法。
但是,如果您只想根据是否为真/假的参数来测试是否未使用auth
调用/执行某个函数,那么您做对了。