问题标签 [angular-testing-library]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
170 浏览

angular - 在Angular单元测试中使用ngValue时如何获取选择的值

在我的 Angular 应用程序中,我<select>绑定了如下的反应形式:

在这个阶段,mySelectValues是一个字符串数组。

我像这样进行组件 dom 测试

这工作正常。但是,在某些时候,在某些选择中,我需要在某些地方将对象作为值而不是纯字符串/数字。

所以我改变了我的 HTML 代码来[ngValue]代替[value]

此时,在我的测试中,值select.value不再是,'ABC'而是变成类似于'2: ABC'where 2is the index of the selected option,然后是列 + 空格,然后是实际值。

到目前为止,我可以忍受这个,只需将我的测试更改为:

它一直在工作。但是,在某些地方,我需要将对象用作值,因此mySelectValues不是纯字符串/数字数组,而是对象数组。

例如:

所以像这样改变HTML:

选择现在可以很好地处理对象。但是,我的测试不再有效,因为select.value现在总是返回值,例如'2: Object'因为选择了一个对象而不再是纯字符串。

我怎么解决这个问题?

换句话说:给定一个与绑定到对象一起<select>使用的 a,我怎样才能获得 的选定值(通过 DOM 访问它,就像在我的原始测试用例中一样)?<option>[ngValue]<select>

0 投票
1 回答
87 浏览

angular - 在 Angular 项目中使用 Jasmine-DOM

我有一个 Angular 10 CLI 项目(v10.1.2)。我已经安装了@testing-library/angular@10.0.2,我想要好的匹配器.toBeInTheDocument(),但是当我使用 Karma 运行 Jasmine(通过 Angular 配置)和 Typescript 时,我不确定如何安装@testing-library/jasmine-dom匹配器?

我尝试按照最新版本(v1.1.0)的说明进行操作,但是虽然我可以HTMLMatchers在 VSCode 中看到类型上的匹配器,但我实际上无法添加匹配器。尝试导入它们import JasmineDOM from '@testing-library/jasmine-dom';会出现错误File C:/.../node_modules/@types/testing-library__jasmine-dom/index.d.ts不是模块。

由于这是一个 Angular CLI 项目,Jasmine 支持 Karma,所以使用 Karma 插件真的更有意义吗?(我什么都看不到……)

0 投票
3 回答
5642 浏览

react-testing-library - 停止测试库的巨大错误输出

我喜欢testing-library,在 React 项目中使用了很多,我现在正尝试在 Angular 项目中使用它——但我一直在为巨大的错误输出而苦苦挣扎,包括渲染的 HTML 文本。这不仅通常没有帮助(我找不到元素,这是没有的 HTML );但是如果您在调试模式下运行,它通常会在有趣的行之前被截断。

我只是将它作为一个库添加到标准 Angular Karma+Jasmine 设置旁边。

我敢肯定,如果 HTML 输出导致我的控制台窗口长时间假脱机,您可能会说我正在测试的组件太大,但是我在 Protractor 中有很多集成测试,而且它们太慢了:(。

0 投票
1 回答
742 浏览

angular - Jest + angular-testing-library:模拟翻译服务

我正在尝试使用 angular-testing-library 测试组件,但我不知道如何从@ngx-translate

我的精简组件:

我的测试:

收到此错误:

并且测试挂起。

更新

我的jest.config.js

package.json 笑话条目:

0 投票
0 回答
107 浏览

angular - Angular 11 无法测试是否调用了 url

我遇到了角度测试的问题。我想检测按钮单击时url 何时更改。我在堆栈上关注了很多类似的问题,但自 1 周以来无法实现我的目标:/

解释

这是我的 HTML 模板:

这是我的测试:

当我运行测试时,我有两个错误

研究

  • 在对堆栈进行了一些研究之后,我设法RouterTestingModule从导入中删除,现在我得到了:
  • 堆栈上的另一个搜索:p,我设法删除{ provide: Router, useValue: router }但保留RouterTestingModule,我得到:

控制台错误

注意:我注意到删除时所有链接都没有呈现RouterTestingModule,所以我认为解决方案是实现组合RouterTestingModule{ provide: Router, useValue: router },

  • 当我使用 a(click)而不是routerLink它运行良好时,为什么?

任何帮助都会很棒:)提前谢谢!

0 投票
0 回答
222 浏览

angular - Angular 单元测试:此构造函数与 Angular 依赖注入不兼容

我正在尝试编写一个 Angular 单元测试(使用 Angular 测试库)并得到一个奇怪的错误。这是我要测试的组件:

这是我的测试:

运行此测试时收到的消息:

此构造函数与 Angular 依赖注入不兼容,因为它在参数列表索引 0 处的依赖无效。

这里有什么问题?

0 投票
0 回答
115 浏览

javascript - 在 Angular 测试库测试中渲染 html 属性

我正在为我的角度测试使用测试库,并且我有一种情况,我需要从 HTML 中设置一个属性,以便能够以我想要的方式呈现组件......这个属性来自一个模块,我试图渲染通过componentProperties传递它的组件,但它不起作用......你们知道如何在我的测试中设置这个属性,以便我可以正确渲染我的组件吗?

我需要渲染 html 上的 ifMobile 属性,如下所示:

这就是我试图测试的方式:(以这种方式测试运行,没有显示任何错误,但是,它没有渲染组件,它基本上没有改变我的组件)

我也尝试过以这种方式进行测试(以这种方式我什至无法运行测试,因为它说 ifMobile 不是有效的属性)

0 投票
1 回答
401 浏览

angular - 带有 jest 和 @testing-library/angular 的 mat-menu 单元测试用例

我有一个使用mat-menuAngular Material UI 的组件。当我打电话时fireEvent.click(),我收到一个错误:TestingLibraryElementError: Unable to find role="menu"在控制台中。

这是我的测试用例:

我无法指出我哪里出错了。我还从这里阅读了 MatMenuHarness 文档。

我正在使用@testing-library/angularjest

0 投票
1 回答
280 浏览

angular - 如何使用测试库重新呈现 Angular 属性指令

鉴于这个非常微不足道的属性指令,它所做的只是将输入中的文本放入 innerText

我正在尝试使用rerenderfrom@testing-library/angular轻松更改输入:

第二个断言不起作用 - 有或没有fixture.detectChanges().

那么,测试这样一个指令的正确方法是什么?尤其是 当您有几个输入并且您想在测试期间一次更改它们的所有值时。

0 投票
1 回答
31 浏览

angular - 在 mat-paginator 上使用 @testing-library/angular (page) 属性方法进行 Angular 10 测试

我的<mat-paginator>元素工作正常,我只想知道如何使用@testing-library/angular 库测试属性的getPaginatorData方法?(page)

这是我的组件

提前致谢。