angular - 运行测试时角度单元测试文件中的令牌说明符无效?
问题描述
我有一个我正在写的angular component
名字。下面是该组件的测试文件的代码appointment
unit-test
appointment.component.ts
appointment.component.spec.ts
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { FormsModule } from '@angular/forms'
import { HttpClientModule } from '@angular/common/http';
import { HTTPService, HelperService, DataService } from '../../../services';
import { AppointmentComponent } from './appointment.component';
import { CancelApptDialogComponent } from '../cancel-appt-dialog/cancel-appt-dialog.component';
import { UpdateApptDialogComponent } from 'app/modules/app-components/update-appt-dialog/update-appt-
dialog.component';
import { ReminderItemComponent } from './../reminder-item/reminder-item.component';
import { AutoCompleteModule } from 'primeng/autocomplete';
import { CheckboxModule } from 'primeng/checkbox';
import { NgxMaskModule } from 'ngx-mask';
import { CookieModule, CookieService } from 'ngx-cookie';
import { ToastrModule, ToastrService } from 'ngx-toastr';
import { DialogService } from 'primeng/dynamicdialog';
import { DynamicDialogRef } from 'primeng/dynamicdialog';
import { DynamicDialogConfig } from 'primeng/dynamicdialog';
import { CalendarModule } from 'primeng/calendar';
import { SharedModule } from './../../shared/shared.module';
describe('AppointmentComponent', () => {
let component: AppointmentComponent;
let fixture: ComponentFixture<AppointmentComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [
AppointmentComponent,
CancelApptDialogComponent,
UpdateApptDialogComponent,
ReminderItemComponent
],
imports: [
BrowserAnimationsModule,
FormsModule,
AutoCompleteModule,
CheckboxModule,
NgxMaskModule.forRoot(),
HttpClientModule,
RouterTestingModule,
SharedModule,
CookieModule.forRoot(),
ToastrModule.forRoot(),
CalendarModule
],
providers: [
HTTPService,
HelperService,
DataService,
DialogService,
DynamicDialogRef,
DynamicDialogConfig,
CookieService,
ToastrService,
]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(AppointmentComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create appointment comp', () => {
expect(component).toBeTruthy();
});
});
当我运行测试时,它会抛出这样的错误
InvalidTokenError: Invalid token specified
是什么导致了这个错误?
解决方案
只需像下面那样模拟您的服务。这些不是你添加的相同服务,以此为例,在你的代码中做这样的事情
const dialogServiceSpy = createSpyObj<DialogService>(['open']);
const dialogRefSpy = createSpyObj<MatDialogRef<any>>(['close']);
.........................
providers: [
{ provide: DialogService, useValue: dialogServiceSpy },
{ provide: MatDialogRef, useValue: dialogRefSpy },
{ provide: MAT_DIALOG_DATA, useValue: {} },
]
提供所有想要的服务,在那里删除不需要的服务。
推荐阅读
- excel - 如何在Excel中搜索时间?
- apache-spark - 无法从 kafka 主题读取数据
- javascript - 对 API 的 PUT 请求返回 403(禁止)
- r - 传感器数据集的零偏移
- c - 为什么这个斐波那契代码只允许 8 个序列?
- azure-storage - 如何通过 CDN 令牌授权特定的 Azure Blob 存储路径
- sonarqube - 防止声纳 qube 误报覆盖
- tcl - 期望脚本条件中的默认路径
- c - 使用 Infineon XMC4800 MCU 和 Segger 进行 GDB 调试中断而无断点
- python - 如何将使用 Camelot 的 Flask 应用程序部署到 Heroku?