问题标签 [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 回答
2459 浏览

angular - 角度观众模拟 Observable

我正在尝试使用https://github.com/ngneat/spectator编写一个(相当)复杂的测试 我有一个组件,它在ngOnInit中有 3 个 http 服务。

其中两个很容易模拟,我可以通过两种方式(我认为):

或者

问题是,我有另一项服务不像其他两项那样工作。该服务如下所示:

我需要模拟的部分是 public property category。我不知道如何去嘲笑它。有谁有想法吗?

这是我正在测试的组件的ngOnInit方法:

0 投票
1 回答
3107 浏览

angular - 带有旁观者的角度单元测试 - 模块“DynamicTestModule”导入的意外值“FormBuilder”。请添加@NgModule 注释

我想使用旁观者来帮助我进行单元测试,因为我已经阅读了有关它的精彩内容。但是我不确定如何解决我的测试问题。在我的组件模板中,我有一个formGroup这样的......

在我的 TS 文件中,我的ngOnInit/ constructor...

所以我需要模拟我的服务和导入,所以这是我的 spec.ts 文件......我减少了一些代码以提高可读性:

当我运行测试时,出现以下错误:

错误:模块“DynamicTestModule”导入了意外的值“FormBuilder”。请添加 @NgModule 注释。

现在我可以用它CUSTOM_ELEMENTS_SCHEMA来防止错误,但这似乎是错误的。谁能告诉我如何解决我的问题。

0 投票
1 回答
2243 浏览

angular - 带旁观者的模拟 Angular 路由器

我正在使用Spectator编写我的 Angular 8 测试并使用Jest来运行它们。我是前端单元测试的新手,所以我可能忽略了一些简单的事情;欢迎任何想法。

我有以下方法(在 Typescript 中),它根据当前 URL 是否与一组路径匹配(不包括 queryParams 和片段)返回一个布尔值:

我现在想用 Spectator 编写测试,它将根据几个可能的 url 验证布尔返回值。在Java中,我会Router用一个模拟对象来模拟并执行以下操作:

我如何创建一个模拟Router?以及如何定义返回值this.router.parseUrl(this.router.url).root.children['primary']

这是我目前拥有的:

我知道它createRoutingFactory提供了ActivatedRouteStub开箱即用的东西,但我无法用它做任何有意义的事情。

PS:我将业力添加为标签,因为它可能具有相同的解决方案,但如果我错了,请纠正我。

0 投票
2 回答
3084 浏览

angular - 观众角度测试 - 在 ngOnInit 之前传递输入

我正在使用Spectator编写我的 Angular 8 测试并使用Jest来运行它们。根据自述文件,我可以setInput()用来将我的值分配给该字段的名称,这很有效。问题是在创建组件后正在验证输入,但在此之前我需要它,因为我在我的ngOnInit方法中使用它进行初始化:

旁观者将正确设置 queryParampage和 Input items,但前提是组件已经创建。在组件创建期间,将使用和ngOnInit进行初始化。page == 1items == []

我可以在每个方法中创建旁观者组件并分别传递 queryParams,但我找不到在createRoutingFactory参数中传递输入的方法。

或者,我可以使用主机组件工厂来传递我的输入参数,但是我失去了传递我相信的查询参数的能力。

0 投票
0 回答
490 浏览

angular - Angular Spectator 测试 ErrorHandler HttpErrorResponse

总结问题: 我想用 Spectator 和 Jest 测试我的自定义 ErrorHandler。我希望通过一个简单的测试,其中一个特定的方法handleFailFastError被调用一次以获取HttpErrorResponse状态代码500。实际结果是在另一个方法中HttpErrorResponse被处理。TypeError

描述您尝试过的内容: 我检查了我是否在方法内,是的,我在。检查console.log电话并打印出错误。它是一个{castToWriteable: [Function]}对象。因此,我检查它是否是一个实例的HttpErrorResponse条件失败了,并且我的 handleError 将响应作为 TypeError 处理。在这个例子上定位我自己。还检查了这个stackoverflow条目

显示一些代码 ErrorHandler:

到目前为止,我使用旁观者和笑话进行的测试:

0 投票
1 回答
356 浏览

angular - 如何在 ActivatedRoute 上设置数据以进行观众测试?

有人知道如何使用 Spectator 测试组件中已解析的路由数据吗?在我的组件代码中,我获取 Todo 数组数据并将其设置为材料表的 dataSource。我想测试一下,如果我使用 Todo() 存根 ActivatedRoute,它将填充我的数据源。

我无法让这个测试工作。我尝试了多种设置 route.data 的方法。在线示例都没有具体说明如何以这种方式测试路由。

有任何想法吗?

组件代码

0 投票
0 回答
540 浏览

angular - 集成测试 ReactiveForm,valueChanges 方法未触发

我用 Spectator 测试一个组件,其中包含 ngInit

querySuggestion$ observable 通过异步管道绑定。我的问题是我尝试做一个集成测试,如果 getSuggestion 方法被正确调用,它可以触发我的 searchControl 和查看。

该代码tap(value => console.log(value))从未被调用,我的测试在返回 0 的 haveBeenCalled 上失败。

角度版本
:8.2.10 笑话:24.9.0

0 投票
2 回答
42 浏览

angular - Angular 测试:没有管理依赖项

我是 angular 8 的新手。我写了一些组件,现在我正在编写测试(但是旁观者,但它不介意)。

我想写简单的测试,只检查组件是否创建成功。

我发现依赖项管理很糟糕,我花了 10 倍的时间来查找所需的依赖项,而不是编写测试。

真的没有办法避免吗?一个可以为我们管理它的图书馆?还是默认注入所有依赖项?

谢谢。

编辑1:事情是我使用材料,这需要很多依赖。作为我要测试的组件的依赖关系的示例:

0 投票
1 回答
1070 浏览

angular - 出现错误:模块“DynamicTestModule”使用 jest+spectator angular 9 声明的意外值“未定义”

我正在使用 Angular 9 并在深入研究后将 angular 的默认单元测试替换为旁观者和开玩笑,这很有趣,而且我几乎没有可以正常工作的测试,但是在尝试测试某些父组件时突然出现了这个问题,导致了丑陋的错误(看问题标题)我不知道如何解决,很高兴得到一些帮助,代码如下

其他类似的测试正在工作,但是即使我删除了模板的所有标记并只写了愚蠢的 div,并且取消了对测试的模拟,我仍然得到这个无赖...尝试重新启动服务器没有帮助。

规格

组件.ts

组件.html

0 投票
0 回答
404 浏览

unit-testing - TypeError: testing.TestBed.inject is not a function ( jestjs with spectator )

运行一项测试时出现此错误。我使用 jestjs 和旁观者来测试我的角度服务