gpt4 book ai didi

angular - 在不设置 formcontrol 的情况下测试 Angular react 形式输入值

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

我有这样一个表格:

<form id="save_form" (ngSubmit)="save()">
<input id="input_user" type="text" [formControl]="myForm" />
<button type="submit">save</button>
</form>

我有这样的测试:

const inputUser: HTMLInputElement = fixture.nativeElement.querySelector("#input_user");
const saveForm: DebugElement = fixture.debugElement.query(By.css("#save_form"));

inputUser.value = "Bob";
//component.myForm.setValue("Bob");

saveForm.triggerEventHandler("ngSubmit", null);

fixture.detectChanges();

在我的组件中,输入值没有更新 myForm。如果我使用注释掉的语法,表单会更新,但输入标签不会被填充。

我正在尝试模拟来自用户的输入值,表单控件是否应该通过测试中的输入值进行更新?我觉得如果我只是手动更新表单控件,我就不会模拟用户。

更新:

    //component.searchUsers.setValue("Bob");
const e: Event = document.createEvent("Event");
e.initEvent("input", false, false);
inputUser.value = "Bob";
inputUser.dispatchEvent(e);
fixture.detectChanges();

myForm.triggerEventHandler("ngSubmit", null);
fixture.detectChanges();
fixture.whenStable().then(() =>
expect(condition).toBe(true));

最佳答案

您需要通过从输入分派(dispatch)更改事件来触发更改检测,然后检测更改。我是这样做的。

const e:Event = document.createEvent('Event');
e.initEvent('input', false, false);
inputUser.value = 'Bob';
inputUser.dispatchEvent(e);
fixture.detectChanges();
fixture.whenStable().then(() => expect(something).toEqual('something'));

关于angular - 在不设置 formcontrol 的情况下测试 Angular react 形式输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50237482/

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