问题标签 [angular-spectator]

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 投票
1 回答
181 浏览

angular - Angular Spectator,不能使用自定义匹配器

我正在尝试使用旁观者来测试我的 Angular 组件。我想使用其中一个自定义匹配器,但出现错误Property 'toBeEmpty' does not exist on type 'JestMatchersShape<Matchers<void, Element>, Matchers<Promise<void>, Element>>'

该组件非常简单,这是一个简单的测试:

我阅读了旁观者的文档,并没有说任何关于导入自定义匹配器的内容,还有互联网上的示例,他们在使用它们之前没有提到任何要做的事情。

0 投票
1 回答
730 浏览

angular - 使用 jest-mock-extended 和 Spectator 进行角度组件测试

我已经成功地使用jest-mock-extended来测试服务,它对我来说很好用。它简单、易于使用且打字安全。

现在我必须测试 Angular 组件。为此,我找到了Spectator。我设法为没有使用该SpectatorHost功能的服务的简单组件编写测试。现在我必须用我应该模拟的服务来测试一个组件,但我真的很难做到这一点。

出于这个原因,我想知道是否有办法将创建的模拟注入jest-mock-extended到内部生成的组件中SpectatorHost

通过这种方式,我还将使用相同的库来模拟我项目中的服务。

0 投票
0 回答
444 浏览

angular - 如何使用 Jest/Spectator 在 Angular 中测试路由/导航?

我正在尝试为 Angular 10 应用程序编写端到端规范,但我无法通过路由器/导航测试从一个组件到另一个组件(当我在浏览器中运行应用程序时工作正常)。

我的路线配置如下:

我的导航栏模板为:

我的规格如下:

我尝试了不同的变体createComponent,无论是createComponentFactorycreateRoutingFactory,有或没有stubsEnabled。似乎没有任何工作,并且路由不会触发加载附加到路由的组件。

我已经能够在单击该console.log 时添加一个事件,并且单击确实在规范执行期间触发了它,因此该事件会传播;只是路由没有运行。

的值(spectator.fixture.nativeElement as HTMLDivElement).outerHTML不变。

编辑:我创建了一个小型复制项目,它托管在https://stackblitz.com/edit/angular-ivy-epvfki但是它不能直接在 StackBlitz 上运行(不能在浏览器中运行 jest),所以它需要下载和

这个测试应用程序有 2 个按钮通向 2 个路由,规范单击一个按钮并测试路由是否触发,但它没有。

0 投票
1 回答
567 浏览

angular-spectator - 使用 Spectator 测试文本字段输入

我正在尝试使用@ngneat/spectator6.1.1 版测试我的指令

这总是以input.value空白返回。我刚刚开始使用观众。执行此测试的正确方法是什么?

0 投票
0 回答
26 浏览

angular - Angular Spectator 测试的 `within` 等价物

使用 react-testing-library 时,该within方法允许我使用匹配器在 HTML 的某些部分中查找元素。

我可以看到我可以在 DOMSelector 的属性中传递一个字符串byText('Name', {selector: '.name'})选择器:但这意味着我不能使用 nicebyTextbyTitle来构建更复杂的选择器,我必须自己将它们实现为普通查询选择器,比如:

而我想使用by*DOMSelectors 的强大功能来编写:

我是否遗漏了什么,或者这是 Spectator 目前没有的功能?

0 投票
1 回答
57 浏览

angular - 如何将模拟库安装到 Angular 的单元测试中?我想将 sinon-chrome 安装到观众测试中

我正在开发一个用 Angular 编写的 Google Chrome 扩展,我需要为使用 Chrome API 的组件编写单元测试。我找到了一个我相信可以完成这项工作的图书馆。

https://www.npmjs.com/package/sinon-chrome

但是,我没有足够的 Angular 经验来知道如何准确地使用该库。用法部分说我需要要求常量中的值,但我不知道该怎么做或去哪里。这会在单元测试中进行吗?karma文件里有吗?示例global.chrome中的内容是什么。

我的单元测试的代码。除了这个 chrome mock 问题外,它运行良好。

AppComponent是铬的地方

谢谢你的帮助。

0 投票
1 回答
371 浏览

angular - RxJs:测试依赖于其他可观察对象的可观察对象/

我有一个名为 isSearchEnabled$ 的 observable,它指示搜索表单上的搜索按钮是否可点击。这是可观察的代码:

isSearchEnabled$ = anotherObject.errorSource$.pipe(map((errors) => errors.length === 0);

可以看到,这个 observable 依赖于另一个 observable,它在每次表单验证发生时都会发出一个数组。因此,当数组为空时,isSearchEnabled 发出布尔值 true,否则为 false。

我想测试这个可观察的,但我不确定如何。我应该模拟anotherObject.errorSource$发出假错误,并检查isSearchEnabled$返回真还是假?

我应该如何在 Angular/RxJS 中做到这一点?如果有人在旁观者中有解决方案,或者只是常规解决方案,我将不胜感激!

PS.:我知道我应该提供一个工作示例,但我认为这个描述很简单,不需要进一步的代码。

0 投票
0 回答
40 浏览

jasmine - 观众/茉莉花更换服务电话

我正在使用ngneat/spectator进行测试,它使用 jasmine。我试图让我注入的服务伪造一个调用和返回值,但真正的服务被调用了。

我像这样创建了工厂:

然后在测试中,我尝试通过模拟服务替换调用。

当我的组件调用postRequest它不是使用假版本时,它调用的是实际RequestService方法。

显然,我没有正确地将事情联系起来,但是对于茉莉花和一般测试来说真的很陌生,我不确定是什么。是通过组件的RequestService构造函数注入的,并且没有明确列为组件的提供者。

0 投票
0 回答
402 浏览

angular - 使用 jest 和旁观者的角度测试失败 TypeError: testing.waitForAsync is not a function

我正在使用 Angular CLI:10.2.3 节点:12.22.1 npm:6.14.12

我是角度的新手。我正在尝试使用 jest 来测试角度代码(项目运行良好,没有任何错误,现在在我看到问题的地方添加一些测试)。我有很多自定义服务,所以使用 Spectator 来模拟它们。我的测试很少,其中一个(失败)如下。

一个简单的组件测试如下。

我收到以下错误:

我找不到与此错误相关的任何内容。我没有明确使用 waitForAsync。这里应该是什么问题?

0 投票
1 回答
444 浏览

angular - Angular jest spectator 在测试另一个服务时模拟服务依赖

我在用,

角 CLI:10.2.3

节点:12.22.1

该项目构建并运行良好。我现在正在尝试使用 Jest 和 Spectator 添加测试。我有以下服务;我正在尝试运行一个非常基本的测试(可以模拟大多数值)。

在构造函数中,它试图基于另一个自定义服务 ( ) 设置 2 个变量 (this.environmentName和)。this.environmentUrlruntimeConfig

我正在尝试使用以下内容进行测试:

这失败并出现错误:

运行时配置如下。我尝试初始化这些值但没有帮助。

如何模拟这些服务及其值,以便让这个基本测试正常工作?