问题描述
我正在使用 angular2 进行组件测试.在我的 html 模板中,我使用了翻译管道.这是测试的代码:
I am working on component testing with angular2. in my html template i use the translate pipe. This is the code of the test :
import { ComponentFixture, TestBed ,getTestBed} from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { DebugElement } from '@angular/core';
import { RightComponent } from './right.component';
import {TranslateService} from 'ng2-translate/ng2-translate';
import {Injector} from "@angular/core";
let comp: RightComponent;
let fixture: ComponentFixture<RightComponent>;
let el: DebugElement;
let translate: TranslateService;
let injector: Injector;
describe('testComponent', () => {
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [ RightComponent ]
});
injector = getTestBed();
translate = injector.get(TranslateService);
fixture = TestBed.createComponent(RightComponent);
comp = fixture.componentInstance; // BannerComponent test instance
// get title DebugElement by element name
el = fixture.debugElement.query(By.css('h2'));
});
it('should display original title', () => {
fixture.detectChanges(); // trigger data binding
expect(el.nativeElement.textContent).toContain('Liste des droits');
});
});
我收到此错误,翻译管道未知:
i got this error the the translate pipe is not known :
Error: Template parse errors:
The pipe 'translate' could not be found ("<h2>[ERROR ->]{{'RIGHT_TITLE' | translate}}</h2>
<div class="table-responsive">
<table id="rightTableId" clas"): RightComponent@0:4
The pipe 'translate' could not be found ("
<table id="rightTableId" class="table table-striped">
<tr>
<th>[ERROR ->]{{'NAME_LABEL' | translate}}</th>
</tr>
<tr *ngFor="let right of rights">
"): RightComponent@4:16
The pipe 'translate' could not be found ("
</tr>
<tr *ngFor="let right of rights">
<td>[ERROR ->]{{right.name | translate}}</td>
</tr>
</table>
我们如何解决这个问题?
How we resolve this problem ?
谢谢.
推荐答案
您需要使用库模块配置 TestBed
,就像使用实际应用程序配置库一样.查看文档,它显示了通过导入模块
You need to configure the TestBed
with the library module just like you would configure the library with your real application. And looking at the documentation, it shows configuring it by importing the module
imports: [
TranslateModule.forRoot()
]
所以你应该在 TestBed
配置中做同样的事情
So you should do the same in the TestBed
configuration
TestBed.configureTestingModule({
declarations: [ RightComponent ],
imports: [TranslateModule.forRoot()]
});
这就是 TestBed.configureTestingModule
的作用:为测试环境配置一个模块.
This is what the TestBed.configureTestingModule
is for: to configure a module for the test environment.
这篇关于找不到管道“翻译",angular2 组件测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!