Angular 2 Jasmine无法测试表单提交

时间:2018-10-09 04:03:44

标签: angular unit-testing karma-jasmine

嗨,我正在用茉莉花编写单元测试用例。我是茉莉的新手。我在html中有一种表单,我正在为此编写单元测试用例。

下面是我的表单html代码。

<form *ngIf="formResetToggle" class="form-horizontal" name="tenantEditorForm" #f="ngForm" novalidate
      (ngSubmit)="f.form.valid ? saveTenant() :
      (!tenantname.valid && showErrorAlert('Tenant name is required', 'Please enter a name for the tenant'));">

</form>

以下是规格。

it('Save Tenant', fakeAsync(() => {
        fixture.detectChanges();
        spyOn(component, 'saveTenant');
        let submitButton = fixture.debugElement.query(By.css('#saveTenant'));
        submitButton.triggerEventHandler('click', null);
        tick();
        fixture.detectChanges();
        expect(component.saveTenant).toHaveBeenCalled();
    }));

此规范给我错误

  

预期已调用间谍saveTenant。

有人可以帮我解决问题吗?任何帮助,将不胜感激。谢谢

1 个答案:

答案 0 :(得分:1)

这里的主要问题是由于debugElement.triggerEventHandler方法触发了要在debugElement上提交事件时在 current form上注册的事件处理程序。

在这种情况下,我建议您改用原生点击事件。

submitButton.nativeElement.click();

另请参阅:

Plunker Example