加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – JS,单元测试:期待回调

发布时间:2020-12-17 18:11:08 所属栏目:安全 来源:网络整理
导读:我正在使用Leaflet,我正在创建一个标记.一旦鼠标离开此标记,我想删除我在mouseenter上显示的弹出窗口: marker.on('mouSEOut',e = this.leafletMap.closePopup()); 在我的测试中,我想知道提供的回调是否是我所期望的. 我已经测试了事件是否发生在mouSEOut上
我正在使用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));

但我不知道我在做什么(我是单位测试的新手),而且我无法在网上找到解决方案,因为我真的不知道怎么称呼这种测试.

我应该声明我在打字稿中工作.

解决方法

看起来你想测试的是函数回调做你想要的.为此,您不应该检查函数字符串.那个测试太脆弱了.

相反,您应该在调用回调时检查该传单是否已关闭.这是一个简单的测试.它假定您已正确搭建标记,传单和回调:

describe('Marker',() => {
    it('should invoke closePopup',() => {
        let marker = createMarkerWithLeaflet();
        spyOn(marker,'on');
        spyOn(marker.leaflet,'closePopup');

        marker.on.calls.argsFor(0)[1]();
        expect(marker.leaflet.closePopup).toHaveBeenCalled();
    });
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读