我有一个函数返回一个承诺并调用另一个函数,该函数将回调作为参数,但我无法弄清楚如何模拟回调函数或调用它的函数。
我试图模拟的函数是来自我正在注入的服务的“listenOnAMessageWithCallBack”,我还想模拟它调用的回调函数。
我的实现:
async getUsername(): Promise<string> {
return await new Promise<string>((resolve, reject) => {
try {
this.electronController.sendMessage('userName');
let cb = (event, username) =>{
this.username = username;
let user = this.stripDomain(this.username);
resolve(user);
};
this.electronController.listenOnAMessageWithCallBack('catchUser', cb);
} catch (err) {
reject(err);
}
})
}
Run Code Online (Sandbox Code Playgroud)
我的测试如下:
it('testing function with callback', async() => {
const stripDomain = spyOn(service, 'stripDomain').and.callFake(()=>{
service.username = service.username.split('\\').reverse()[0];
return service.username;
});
let cb = (event, username)=>{Promise.resolve('username')}
spyOn(electronController, 'listenOnAMessageWithCallBack').withArgs('message').and.callFake(()=>{});
let username = await service.getUsername();
expect(username).toBe('username');
expect(stripDomain).toHaveBeenCalledTimes(1);
});
Run Code Online (Sandbox Code Playgroud)
运行测试时出现以下错误: Spy 'listenOnAMessageWithCallBack' 收到带有参数 …
我正在将 Dexie DB 版本 2.0.4 与 Angular 8 和 Electron 一起使用。我意识到,在数据库中输入的数据越多,对其进行的查询越多,数据库调用就会变得越慢。
我是一个 Dexie 菜鸟,不确定在发出某些请求后是否有办法关闭连接,或者是否有东西卡在内存中。
任何人都知道如何调试或确认问题是什么?
这是我向数据库提出的请求之一的示例:
await this.indexdb.TableName.filter(SomeProperty => SomeProperty == Property).toArray();
await this.indexdb.TableName.put({'SomePropertyName':'SomePropertyValue'})
Run Code Online (Sandbox Code Playgroud)
多谢
angular ×1
angular8 ×1
chromium ×1
dexie ×1
electron ×1
indexeddb ×1
jasmine ×1
javascript ×1
typescript ×1
unit-testing ×1