问题标签 [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.
angular - 如何将 angular2 服务注入单元测试?(RC3)
我正在使用RC3
. 我正在实施Angular2
此处记录的新路由器:https ://angular.io/docs/ts/latest/guide/router.html
一切正常,但我在单元测试中遇到问题。具体来说,我无法将Angular2
服务注入到我的单元测试中。
我的相关组件代码是:
我的单元测试看起来像:
“应该实例化组件”单元测试失败。错误是:
无法解析“ActivatedRoute”的所有参数(?、?、?、?、?)。确保所有参数都用 Inject 修饰或具有有效的类型注释,并且 'ActivatedRoute' 用 Injectable 修饰。
我如何让这个工作?
当我不注入时,ActivatedRoute
一切正常。
谢谢。
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
angular - 如何修复 beforeEachProviders(RC4 已弃用)
我刚刚将 Angular2 从 RC3 升级到 RC4 ...
在我的单元测试中,我有以下代码......
这工作正常,但自从移动到 RC4 后,我在beforeEachProviders
.
有人知道新的做事方式是什么吗?beforeEachProviders
或者我应该从其他地方而不是“@angular/core/testing”导入?
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
unit-testing - 对具有依赖关系的组件进行单元测试,有什么问题?
我有恼人的错误,可能由于我的错误我无法解决。我有一个简单的组件,它实际上只是我的 Web 应用程序中的顶栏元素。
如您所见,该组件只有一个依赖项,UserService
并且它非常简单地使用它:
由于该服务还具有一些依赖项(路由器等),因此我必须在beforeEachProviders
方法中提供它们,如您所见:
当我运行测试时,虽然我收到此错误消息:
Chrome 51.0.2704 (Mac OS X 10.11.5) 组件:TopBar 应该注入组件失败错误:没有位置提供程序!(TopBarComponent -> UserService -> 路由器 -> 位置)错误:DI 异常 [......]
首先,您可以看到提供了位置提供程序。其次,为什么我的测试需要提供(或注入)所用组件服务的依赖项?
例如,如果从上面的测试中我删除了路由器,即使我的组件不使用路由器,我也会得到一个错误,因为使用的服务使用了。那么我不应该在组件中收到相同的错误,而不仅仅是在测试中吗?
更新 - 更改代码和错误消息
我已经设法通过将我的规范更改为这样来停止出现此错误:
但是知道我从我的组件中得到了这个错误:
TypeError:无法读取未定义的属性“userService”
提到的错误在这个函数上:
我的组件,但这只是在测试中。在应用程序中它可以正常工作。在我的测试中,由于某种原因,该函数无法到达构造函数的参数。
这里的堆栈...
angular - Angular2 RC4:覆盖指令
我刚刚将 RC3 更新为 RC4,现在我在测试中遇到了这个错误:
在TestComponentBuilder
里面@angular/core@2.0.0-rc.4/testing/test_component_builder.js
我可以看到这个方法的声明
所以现在的问题是:我如何覆盖指令?
unit-testing - 如何对依赖于 ActivatedRoute 参数的组件进行单元测试?
我正在对用于编辑对象的组件进行单元测试。该对象具有唯一id
性,用于从服务中托管的对象数组中获取特定对象。具体id
是通过通过路由传递的参数获得的,特别是通过ActivatedRoute
类。
构造函数如下:
我想在这个组件上运行基本的单元测试。但是,我不确定如何注入id
参数,并且组件需要这个参数。
顺便说一句:我已经有一个模拟Session
服务,所以不用担心。
typescript - 将另一个服务注入服务进行测试 - Angular2
我有两个服务,其中一个依赖于另一个:
UserService
:
ApiService
:
所以我的问题是我正在努力将依赖项注入ApiService
到我的UserService
. 这是我在用户服务规范中的内容。(省略进口):
这引发的错误是:
我还尝试ApiService
在inject
内部添加it
,但错误保持不变,所以:
it('Should ..., inject([UserService, ApiService] ...))
带有 TypeScript 的 Angular 2 RC4
angular - 如何测试调用服务的 Angular 2 指令?
我使用 angular-cli 创建了一个简单的应用程序来说明我的问题。您可以在此处查看所有代码: https ://github.com/wholladay/tracking
每当单击包含元素时,该指令都会调用服务。因此,我想模拟该服务并确保在将点击事件发送到指令时调用它。
这是我的测试代码:
这是我的指令代码:
当我通过 运行测试时ng test
,测试失败,因为 eventCount 仍然是 0 而不是 1。
angular - @angular/core/testing 没有导出成员 'MockApplicationRef'
我想用新的 RC4 版本运行我的旧 angular2 单元测试,但我有一个问题。
MockApplicationRef 发生了什么?
我应该在这里使用什么?