typescript - 期望调用某个函数
问题描述
我有一个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();
})
推荐阅读
- excel - 当 B 列中存在两个值且 A 列中的值相同时计数
- visual-studio-code - 如何将 Pulumi 添加到我的 GitHub Codespaces / VSCode .NET devcontainer?
- components - 隐藏一个外部组件并调用另一个外部组件
- c++ - C ++中重载函数和多个转换运算符的歧义,编译器不同意
- python - rdkit ArgumentError:rdkit.Chem.rdMolDescriptors.GetAtomPairFingerprint(str) 中的 Python 参数类型与 C++ 签名不匹配:
- windows - 我用双缓冲重绘SysListView32控件的滚动条,为什么还是闪烁?
- sql - 在显示正确的 COUNT 和 SUM 数据时连接多个表
- powershell - Soti MobiControl API 调用以更新 PowerShell 中的设备组
- lua - 表作为lua中的参数
- nginx - kubernetes nginx入口重写目标不起作用