组件测试中的 Angular 单击选择选项

标签 angular testing html-select angular5

我尝试了以下方法来尝试单击选择下拉列表中的一个选项,但均无效。

selectEl = fixture.debugElement.query(By.css('#dropdown'));
selectEl.nativeElement.options[3].nativeElement.dispatchEvent(new Event('click'));
selectEl.queryAll(By.css('option'))[3].nativeElement.click();
selectEl.nativeElement.options[3].nativeElement.click();

每次我运行 fixture.detectChanges(); 来运行变化检测但是当我去检查元素值时它没有改变。 expect(selectEl.nativeElement.options[selectEl.nativeElement.selectedIndex].textContent).toBe('name2');

我是不是缺少一些简单的东西来让它工作?

最佳答案

更改下拉列表的选定选项的方法是设置下拉列表值,然后发送一个change 事件。

你可以引用这个答案: Angular unit test select onChange spy on empty value

在你的情况下,你应该做这样的事情:

  const select: HTMLSelectElement = fixture.debugElement.query(By.css('#dropdown')).nativeElement;
  select.value = select.options[3].value;  // <-- select a new value
  select.dispatchEvent(new Event('change'));
  fixture.detectChanges();

关于组件测试中的 Angular 单击选择选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48947374/

相关文章:

javascript - Chrome 开发工具未显示所有请求 header

node.js - 每个数据集的node js,连接数据库,异步执行选择、更新、插入查询

testing - 当测试完成并通过时,Windows 硬件实验室包选项卡不可用

Angular:当使用 innerHTML 并禁用缓存时,图像会在单击时重新加载

angular - 请求体必须包含以下参数 : 'client_assertion' or 'client_secret

testing - 是否有用于记录/监控系统测试的好工具?

javascript - Internet Explorer 不知道如何将选项标签添加到 jQuery 中的选择

html - 如何修复 <select> 下拉菜单水平晃动(仅限 Firefox)?

javascript - 使用 PhantomJS 抓取带有动态组合下拉框的 ASP.NET 网站

javascript - 嵌套的 json 需要借助 Angular 以树结构格式动态显示