gpt4 book ai didi

Angular 2 : Testing components with router

转载 作者:太空狗 更新时间:2023-10-29 17:17:28 26 4
gpt4 key购买 nike

我正在编写使用 routeLink 的最简单的组件:

@Component({
selector: 'memorySnippet',
templateUrl: '<div class="memory-snippet-wrapper" *ngIf="memory"
[routerLink]="['MainPanel', 'MemoryPanel', {'id' : this.memory.id}]">',
directives: [CORE_DIRECTIVES, ROUTER_DIRECTIVES]
})
export class MemorySnippetComponent {
@Input() memory: Memory;
}

当我尝试测试此组件时出现问题。当我添加路由器链接时,Karma 提示缺少提供者:

在添加了 Karma 要求的所有供应商之后,我得到了这个:

beforeEachProviders(() => [
MemorySnippetComponent,
MEMORY_SERVICE_PROVIDERS,
ROUTER_PROVIDERS,
ApplicationRef
]);

但是当我运行测试时我得到这个错误:

EXCEPTION: EXCEPTION: Error during instantiation of Token RouterPrimaryComponent! (RouterLink -> Router -> RouteRegistry -> Token RouterPrimaryComponent).

ORIGINAL EXCEPTION: unimplemented

ORIGINAL STACKTRACE:Error: unimplemented

我做错了什么??? Angular 2 (2.0.0-beta.1) 是否还没有准备好使用路由器指令测试组件?

最佳答案

您应该有一个 beforeEachProviders 方法,如下所示:

import {MockApplicationRef} from '@angular/core/testing';

beforeEachProviders(() => [
ROUTER_PROVIDERS,
provide(APP_BASE_HREF, {useValue: '/'}),
provide(ROUTER_PRIMARY_COMPONENT, {useValue: YourComponent}),
provide(ApplicationRef, {useClass: MockApplicationRef}
]);

MockApplicationRef 由框架提供,用于此类测试。

关于 Angular 2 : Testing components with router,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35139882/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com