gpt4 book ai didi

angular - JS,单元测试 : expect on a callback

转载 作者:太空狗 更新时间:2023-10-29 17:39:03 26 4
gpt4 key购买 nike

我正在使用 Leaflet,并在其上创建了一个标记。一旦鼠标离开这个标记,我想删除我在 mouseenter 上显示的弹出窗口:

marker.on('mouseout', e => this.leafletMap.closePopup());

在我的测试中,我想知道所提供的回调是否符合我的预期。

我已经用

测试了事件是否发生在 mouseout 上
expect((mockedMarker.on as jasmine.Spy).calls.argsFor(0)[0]).toEqual('mouseover');

关于如何做到这一点的任何想法?

我试过这样的

expect((mockedMarker.on as jasmine.Spy).calls.argsFor(0)[1]).toEqual(JSON.stringify(component.leafletMap.closePopup));

但是我不知道我在做什么(我是单元测试的新手),而且我在网上找不到解决方案,因为我真的不知道如何调用这种测试。

我应该声明我在 Typescript 中工作。

最佳答案

你所做的不是单元测试,但既然你想测试,我会给出一个解决方案。下面是我为您制定的 Jasmine 脚本示例

let marker = function() {
function on(a, b) {
console.log(a, b);
}

this.on = on;
}
describe('this', () => {
it('xya', () => {
y = new marker()
spyOn(y, 'on');
y.on('onmouseout', e => this.leafletMap.closePopup());
const lambda = y.on.calls.argsFor(0)[1]
console.log(lambda.toString())
expect(lambda.toString()).toEqual("e => this.leafletMap.closePopup()")
})
})

在终端上运行

$ npx jasmine mocking.js
Randomized with seed 33786
Started
e => this.leafletMap.closePopup()
.


1 spec, 0 failures
Finished in 0.006 seconds
Randomized with seed 33786 (jasmine --random=true --seed=33786)

关于angular - JS,单元测试 : expect on a callback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48863599/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com