angular - detectChanges 重置反应形式。在测试中管理表单值的正确方法是什么?
问题描述
我正在为反应形式编写测试。
app.form.get('name').setValue('new value');
expect(app.form.get('name').value).toEqual('new value');
fixture.detectChanges();
expect(app.form.get('name').value).toEqual('new value'); // <-- Fails.
我调试了它。我看到控制值在之后被重置为默认值detectChanges
在测试中管理表单值的正确方法是什么?
解决方案
由于这个原因,您的测试可能会失败:
fixture.detectChanges();
将执行方法,如果您在该生命周期钩子ngOnInit
中实例化值,app.form
然后所有字段将再次获得默认值以及您之前设置的值:
app.form.get('name').setValue('new value');
将被覆盖,然后您的测试expect(app.form.get('name').value).toEqual('new value'); // <-- Fails.
将失败。
推荐阅读
- docker - 从 Docker GitHub Action 将二进制文件添加到 PATH 以供以后的工作流程步骤使用
- javascript - 如何通过状态传递数组项
- elasticsearch - 从聚合结果中求和 doc_count - 错误“buckets_path 不存在用于聚合
- ios - iOS Game Center GKScore 上下文,如何编码信息?
- google-apps-script - Google Sheet GAS中过滤方法的字符串部分匹配
- r - 通过带有 facet wrap 的特定变量重新排序 geom_bar
- promise - 方法链有自我意识吗?
- python - 从 python 程序中保存多个输入的文件读取问题
- google-sheets - Google Sheets 图表中的绝对引用
- sqlite - 将图像绑定到 CarouselView