我有一个onChange
侦听器,我想确保该侦听器被调用。
事实上,我确实有一些令人惊叹的代码,但这似乎很奇怪。
test('on change should be invoked when deleting', async () => {
expect.assertions(1);
someTestThing.onChange.sub(() => expect(true).toBe(true));
await someTestThing.delete(TEST_ID);
});
我指的是expect(true).toBe(true)
部分看起来不对。
编辑:
我想我也可以这样做,这看起来确实有点合理,实际上我很喜欢:
test('on change should be invoked when deleting', async () => {
const cb = jest.fn();
someTestThing.onChange.sub(cb);
await someTestThing.delete(TEST_ID);
expect(cb.mock.calls.length).toBe(1);
});
使用Jest的toHaveBeenCalled
断言。
const someTestThing = {
onChange: (event: Event) => console.log(event),
delete: async (id: string) => console.log(id)
}
it('on change should be invoked when deleting', async () => {
const mock = jest.fn(someTestThing.onChange);
mock(new CustomEvent('Foo'));
await someTestThing.delete('1')
expect(mock).toHaveBeenCalled();
})
文档