错误:模块“DynamicTestModule”导入了意外的值“CookieService”。请添加@NgModule 注释
Posted
技术标签:
【中文标题】错误:模块“DynamicTestModule”导入了意外的值“CookieService”。请添加@NgModule 注释【英文标题】:Error: Unexpected value 'CookieService' imported by the module 'DynamicTestModule'. Please add an @NgModule annotation 【发布时间】:2021-10-07 10:59:21 【问题描述】:我正在尝试使用 jasmine 测试服务,但出现此错误:
错误:模块“DynamicTestModule”导入了意外的值“CookieService”。请添加@NgModule 注解。
和
错误:预期未定义是真实的。
我的规格文件:
import RouterTestingModule from '@angular/router/testing';
import TestBed from '@angular/core/testing';
import Api from './api.service';
import HttpClientTestingModule, HttpTestingController from '@angular/common/http/testing';
import CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, Inject, Injectable from '@angular/core';
import CookieService from 'ngx-cookie';
fdescribe('ApiService', () =>
let service: Api;
let httpMock: HttpTestingController;
beforeEach(() =>
TestBed.configureTestingModule(
providers: [
Api,
],
imports: [
HttpClientTestingModule,
RouterTestingModule,
CookieService
],
schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],
);
);
beforeEach(() =>
service = TestBed.inject(Api);
httpMock = TestBed.inject(HttpTestingController);
);
it('should be created', () =>
expect(service).toBeTruthy();
);
);
【问题讨论】:
【参考方案1】:此错误消息显示为CookieServie
不是NgModule
。
错误:模块“DynamicTestModule”导入了意外的值“CookieService”。请添加@NgModule 注解。
作为Ngx-Cookie documentation,
将 cookie 服务作为提供者添加到您的 app.module.ts:
解决方案
您必须从 imports
部分中删除 CookieService
并将其添加到 providers
部分中。
.spec.ts
TestBed.configureTestingModule(
providers: [
Api,
CookieService
],
imports: [
HttpClientTestingModule,
RouterTestingModule
],
schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],
);
Sample solution on StackBlitz
【讨论】:
很好,但是我有一个新问题 XD,这是:NullInjectorError: R3InjectorError(DynamicTestModule)[Api -> CookieService -> CookieOptionsProvider -> CookieOptionsProvider]: NullInjectorError: No provider for CookieOptionsProvider! 您需要将CookieModule.forRoot()
添加到imports
部分。你可以参考这个GitHub issue。以上是关于错误:模块“DynamicTestModule”导入了意外的值“CookieService”。请添加@NgModule 注释的主要内容,如果未能解决你的问题,请参考以下文章
模块“DynamicTestModule”导入的意外值“DecoratorFactory” - karma-jasmine
Angular 2.0.0 - 测试“由模块'DynamicTestModule'导入”
失败:模块“DynamicTestModule”导入的意外指令“ContactDetailsComponent”。请添加@NgModule 注释
角度单元测试:失败:模块“DynamicTestModule”导入的意外值“DxTemplateHost”:添加@NgModule 注释
jasmine-karma 中的模块“DynamicTestModule”导入的意外值“未定义”
模块'DynamicTestModule'导入的意外值'DecoratorFactory'。请添加@NgModule注释