问题标签 [angular2-testing]

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 回答
2992 浏览

angular - 如何将 angular2 服务注入单元测试?(RC3)

我正在使用RC3. 我正在实施Angular2此处记录的新路由器:https ://angular.io/docs/ts/latest/guide/router.html

一切正常,但我在单元测试中遇到问题。具体来说,我无法将Angular2服务注入到我的单元测试中。

我的相关组件代码是:

我的单元测试看起来像:

“应该实例化组件”单元测试失败。错误是:

无法解析“ActivatedRoute”的所有参数(?、?、?、?、?)。确保所有参数都用 Inject 修饰或具有有效的类型注释,并且 'ActivatedRoute' 用 Injectable 修饰。

我如何让这个工作?

当我不注入时,ActivatedRoute一切正常。

谢谢。

0 投票
1 回答
536 浏览

angular - routerLinkActive directive causes undefined is not an object (evaluating 'router.events.subscribe')

I am using Angular2 RC3 and the new router. My HTML ...

routerLinkActive applies the 'active' class according to the selected link. Works great.

Problem is by adding [routerLinkActive] my unit tests now fail with ...

undefined is not an object (evaluating 'router.events.subscribe')

anyone got a fix for this?

many thanks

0 投票
3 回答
8850 浏览

angular - 如何修复 beforeEachProviders(RC4 已弃用)

我刚刚将 Angular2 从 RC3 升级到 RC4 ...

在我的单元测试中,我有以下代码......

这工作正常,但自从移动到 RC4 后,我在beforeEachProviders.

有人知道新的做事方式是什么吗?beforeEachProviders或者我应该从其他地方而不是“@angular/core/testing”导入?

0 投票
1 回答
1102 浏览

karma-jasmine - Angular 2 的业力设置。

我正在尝试使用 Jasmine 设置 Karma 以测试我的 Angular2 应用程序。Karma 无法在规范文件中附加导入的扩展名。例如,我的规范文件有import {TileComponent} from './tiles.component'; 当我运行 Karma 时出现以下错误:http://localhost:9876/base/wwwroot/app/tiles/tiles.component 404 (Not Found) 如果我尝试转到此链接并在最后手动附加 js,它将加载我的文件。

业力.conf.js:

业力测试-shim.js

0 投票
2 回答
7148 浏览

unit-testing - 对具有依赖关系的组件进行单元测试,有什么问题?

我有恼人的错误,可能由于我的错误我无法解决。我有一个简单的组件,它实际上只是我的 Web 应用程序中的顶栏元素。

如您所见,该组件只有一个依赖项,UserService并且它非常简单地使用它:

由于该服务还具有一些依赖项(路由器等),因此我必须在beforeEachProviders方法中提供它们,如您所见:

当我运行测试时,虽然我收到此错误消息:

Chrome 51.0.2704 (Mac OS X 10.11.5) 组件:TopBar 应该注入组件失败错误:没有位置提供程序!(TopBarComponent -> UserService -> 路由器 -> 位置)错误:DI 异常 [......]

首先,您可以看到提供了位置提供程序。其次,为什么我的测试需要提供(或注入)所用组件服务的依赖项?

例如,如果从上面的测试中我删除了路由器,即使我的组件不使用路由器,我也会得到一个错误,因为使用的服务使用了。那么我不应该在组件中收到相同的错误,而不仅仅是在测试中吗?

更新 - 更改代码和错误消息

我已经设法通过将我的规范更改为这样来停止出现此错误:

但是知道我从我的组件中得到了这个错误:

TypeError:无法读取未定义的属性“userService”

提到的错误在这个函数上:

我的组件,但这只是在测试中。在应用程序中它可以正常工作。在我的测试中,由于某种原因,该函数无法到达构造函数的参数。

这里的堆栈...

0 投票
2 回答
278 浏览

angular - Angular2 RC4:覆盖指令

我刚刚将 RC3 更新为 RC4,现在我在测试中遇到了这个错误:

TestComponentBuilder里面@angular/core@2.0.0-rc.4/testing/test_component_builder.js我可以看到这个方法的声明

所以现在的问题是:我如何覆盖指令?

0 投票
10 回答
89186 浏览

unit-testing - 如何对依赖于 ActivatedRoute 参数的组件进行单元测试?

我正在对用于编辑对象的组件进行单元测试。该对象具有唯一id性,用于从服务中托管的对象数组中获取特定对象。具体id是通过通过路由传递的参数获得的,特别是通过ActivatedRoute类。

构造函数如下:

我想在这个组件上运行基本的单元测试。但是,我不确定如何注入id参数,并且组件需要这个参数。

顺便说一句:我已经有一个模拟Session服务,所以不用担心。

0 投票
0 回答
500 浏览

typescript - 将另一个服务注入服务进行测试 - Angular2

我有两个服务,其中一个依赖于另一个:

UserService

ApiService

所以我的问题是我正在努力将依赖项注入ApiService到我的UserService. 这是我在用户服务规范中的内容。(省略进口):

这引发的错误是:

我还尝试ApiServiceinject内部添加it,但错误保持不变,所以: it('Should ..., inject([UserService, ApiService] ...))

带有 TypeScript 的 Angular 2 RC4

0 投票
1 回答
1967 浏览

angular - 如何测试调用服务的 Angular 2 指令?

我使用 angular-cli 创建了一个简单的应用程序来说明我的问题。您可以在此处查看所有代码: https ://github.com/wholladay/tracking

每当单击包含元素时,该指令都会调用服务。因此,我想模拟该服务并确保在将点击事件发送到指令时调用它。

这是我的测试代码:

这是我的指令代码:

当我通过 运行测试时ng test,测试失败,因为 eventCount 仍然是 0 而不是 1。

0 投票
2 回答
3876 浏览

angular - @angular/core/testing 没有导出成员 'MockApplicationRef'

我想用新的 RC4 版本运行我的旧 angular2 单元测试,但我有一个问题。

MockApplicationRef 发生了什么?

我应该在这里使用什么?