Javascript Jasmine单元测试窗口.onbeforeunload

Javascript Jasmine单元测试窗口.onbeforeunload,javascript,angularjs,unit-testing,frontend,karma-jasmine,Javascript,Angularjs,Unit Testing,Frontend,Karma Jasmine,我正在尝试编写一些单元测试,但都失败了。你能给我建议正确的方法吗 show(contactId:string、phoneNumber:string、contactType:string、section:string、memberId:string){ 此.$window.onbeforeunload=()=>“”; $('.disabledcalldialog')。在(“单击”,e=>{ 此.window.alert('请关闭呼叫对话框并重试'); e、 预防默认值(); });您是否尝试过:

我正在尝试编写一些单元测试,但都失败了。你能给我建议正确的方法吗

show(contactId:string、phoneNumber:string、contactType:string、section:string、memberId:string){
此.$window.onbeforeunload=()=>“”;
$('.disabledcalldialog')。在(“单击”,e=>{
此.window.alert('请关闭呼叫对话框并重试');
e、 预防默认值();
});
您是否尝试过:

$window.trigger('onbeforeunload');
而不是:

$(window).trigger('onbeforeunload');
为您服务:

setUpBeforeunload(): void {
  window.addEventListener('beforeunload', this.closeConnection);
}
并使用Jasmine进行单元测试:

describe('setUpBeforeunload', () => {
  it('should set up window eventListener', () => {
    spyOn(window, 'addEventListener');
    service.setUpBeforeunload();
    expect(window.addEventListener).toHaveBeenCalledWith('beforeunload', service.closeConnection);
  });

  it('should call closeConnection()', () => {
    spyOn(service, 'closeConnection');
    service.setUpBeforeunload();
    window.dispatchEvent(new Event('beforeunload'));
    expect(service.closeConnection).toHaveBeenCalled();
  });
});