- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在上一门关于 Angular Testing 的类(class),我试图为一个带有服务的组件设置一个测试,这个服务有 httpClias 作为依赖项,但是当我尝试运行它时出现了这个错误
NullInjectorError: R3InjectorError(DynamicTestModule)[MedicoService -> HttpClient -> HttpClient]:
NullInjectorError: No provider for HttpClient!
error properties: Object({ ngTempTokenPath: null, ngTokenPath: [ 'MedicoService', 'HttpClient', 'HttpClient' ] })
NullInjectorError: R3InjectorError(DynamicTestModule)[MedicoService -> HttpClient -> HttpClient]:
NullInjectorError: No provider for HttpClient!
at NullInjector.get (node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:10756:1)
at R3Injector.get (node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:10923:1)
at R3Injector.get (node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:10923:1)
at injectInjectorOnly (node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:2290:1)
at ɵɵinject (node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:2294:1)
at Object.MedicoService_Factory [as factory] (ng:///MedicoService/ɵfac.js:5:41)
at R3Injector.hydrate (node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:11091:1)
at R3Injector.get (node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:10912:1)
at NgModuleRef$1.get (node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:24988:1)
at TestBedRender3.inject (node_modules/@angular/core/__ivy_ngcc__/fesm2015/testing.js:1943:1)
Error: Expected undefined to be truthy.
at <Jasmine>
at UserContext.<anonymous> (src/app/intemedio2/medico/service/medico.service.spec.ts:14:21)
at ZoneDelegate.invoke (node_modules/zone.js/dist/zone-evergreen.js:364:1)
at ProxyZoneSpec.push.QpwO.ProxyZoneSpec.onInvoke (node_modules/zone.js/dist/zone-testing.js:292:1)
Chrome 86.0.4240.198 (Windows 10): Executed 1 of 28 (1 FAILED) (0 secs / 0.119 secs)
Chrome 86.0.4240.198 (Windows 10) MedicoService should be created FAILED
NullInjectorError: R3InjectorError(DynamicTestModule)[MedicoService -> HttpClient -> HttpClient]:
NullInjectorError: No provider for HttpClient!
error properties: Object({ ngTempTokenPath: null, ngTokenPath: [ 'MedicoService', 'HttpClient', 'HttpClient' ] })
NullInjectorError: R3InjectorError(DynamicTestModule)[MedicoService -> HttpClient -> HttpClient]:
NullInjectorError: No provider for HttpClient!
at NullInjector.get (node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:10756:1)
at R3Injector.get (node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:10923:1)
at R3Injector.get (node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:10923:1)
at injectInjectorOnly (node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:2290:1)
at ɵɵinject (node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:2294:1)
at Object.MedicoService_Factory [as factory] (ng:///MedicoService/ɵfac.js:5:41)
at R3Injector.hydrate (node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:11091:1)
at R3Injector.get (node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:10912:1)
at NgModuleRef$1.get (node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:24988:1)
at TestBedRender3.inject (node_modules/@angular/core/__ivy_ngcc__/fesm2015/testing.js:1943:1)
Error: Expected undefined to be truthy.
at <Jasmine>
at UserContext.<anonymous> (src/app/intemedio2/medico/service/medico.service.spec.ts:14:21)
at ZoneDelegate.invoke (node_modules/zone.js/dist/zone-evergreen.js:364:1)
Chrome 86.0.4240.198 (Windows 10): Executed 26 of 28 (1 FAILED) (skipped 2) (0.382 secs / 0.316 secs)
我只有这个服务 (medicosService)
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class MedicoService {
constructor(public http: HttpClient) { }
getMedicos() {
return this.http.get('....');
}
}
和这个组件
import { MedicoService } from './service/medico.service';
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-medico',
templateUrl: './medico.component.html',
styleUrls: ['./medico.component.css']
})
export class MedicoComponent implements OnInit {
constructor(public medicoService: MedicoService) { }
medicos: any [] = []
ngOnInit(): void {
}
saludarMEdico(nombre: string): string {
return `hello ${nombre}`;
}
optenerMedicos() {
this.medicoService.getMedicos().subscribe((medicos: any []) => {
this.medicos = medicos;
})
}
}
这就是测试
import { MedicoService } from './service/medico.service';
import { ComponentFixture, TestBed } from '@angular/core/testing';
/** El testbed es una clase con muchos metodos para hacewr pruebas */
import { MedicoComponent } from './medico.component';
import { HttpClientModule } from '@angular/common/http';
describe('MedicoComponent', () => {
let component: MedicoComponent;
let fixture: ComponentFixture<MedicoComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [MedicoComponent],
providers: [MedicoService],
imports:[HttpClientModule]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(MedicoComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
//comprueba que el componente se cree
it('should create', () => {
expect(component).toBeTruthy();
});
// verificacion alternativa si el componente se creo, tenemos acceso a sus metodos
it('should return a greeting based on the sent name', () => {
const name = 'Gerardo';
const greeting = component.saludarMEdico(name);
expect(greeting).toContain(name);
});
});
我尝试在导入中使用 HttpClientTestingModule 而不是 HttpClientModule,但我遇到了同样的错误,所以我不知道发生了什么。
最佳答案
错误来自您的服务测试 medico.service.spec.ts
而不是您的组件测试。
例如在您的服务测试中试试这个:
describe('YourService', () => {
beforeEach(() => TestBed.configureTestingModule({
imports: [HttpClientTestingModule]
}));
it('should be created', () => {
const service: YourService = TestBed.get(YourService);
expect(service).toBeTruthy();
});
});
关于angular - 为什么我收到此错误 : NullInjectorError: R3InjectorError(DynamicTestModule)[MedicoService?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64974552/
我在 Angular 5 项目中使用 UI Router。为页脚组件运行测试时出现此错误: Failed: Unexpected value 'StateService' declared by th
总的来说,我对 Angular/测试还很陌生。一直在研究有关测试的 Angular 文档,我正在努力。已在该网站上搜索答案,但没有成功。我还尝试向 app.module.ts 文件添加额外的导入。 使
运行 ng 测试 时完全错误: Error: StaticInjectorError(DynamicTestModule)[NotificationsComponent AuthService]:
我已经加了RouterTestingModule到我的单元测试导入。但它仍然抛出以下错误。 唯一的区别是知道我的路由页面与规范不同。 我附上了我的代码以供引用。 我需要改变什么?或者我如何使用我的路由
我正在上一门关于 Angular Testing 的类(class),我试图为一个带有服务的组件设置一个测试,这个服务有 httpClias 作为依赖项,但是当我尝试运行它时出现了这个错误 NullI
我正在上一门关于 Angular Testing 的类(class),我试图为一个带有服务的组件设置一个测试,这个服务有 httpClias 作为依赖项,但是当我尝试运行它时出现了这个错误 NullI
使用 Angular2.0.0-rc.5 我正在尝试运行以下测试但收到错误: Error: No NgModule metadata found for 'DynamicTestModule'. (l
在我的 MainComponent 中,我有 entryComponent MatSnackBarComponent(自定义组件)。当我编写测试时出现此错误: NullInjectorError: R
我在创建测试组件实例时遇到错误。 let comp: TaskviewComponent; let fixture: ComponentFixture; let deTaskTitle: DebugE
我有这项服务可以从 ws 返回所有城市。 @Injectable() export class CityService { constructor(private http: Http, priv
我对主题错误有疑问。我正在使用 Angular 7 版本。这是我的测试:landing.component.spec.ts import { async, ComponentFixture, Test
我有以下服务: import { Injectable } from '@angular/core'; import { MenuItem } from './../classes/menu-item
我们的项目结构如下:Angular2-webpack-starter . 我们的项目成功编译、构建并可以在浏览器中看到。这里没有问题。 但是当我们尝试使用 karma 和 jasmine 运行测试用例
在我的 Angular/Typescript/Webpack 项目中,我在代码修改后重写单元测试。 问题的症状是在运行非常基本的组件测试时出错:“错误:模块‘DynamicTestModule’声明的
这是我的规范文件: import { ComponentFixture, TestBed, async } from '@angular/core/testing'; import { By }
我是 Angular2 的新手,正在尝试在 app.component.spec.ts 文件中编写测试。我的应用程序相对简单,除了它从第 3 方库(由同事编写)导入 LoginComponent 和
我正在为 AppComponent 准备单元测试用例,该用例将路由器作为注入(inject)的依赖项,并在我的测试台中包含了 RouterTestingModule。但仍然出现奇怪的错误。请找到如下所
我有 angular 2 webpack 应用程序,所有 webpack,karma 配置都是按照 angular.io webpack 指南创建的。我没有使用 aot。我正在编写 jasmine 单
我看到很多人发布关于 NullInjectorError: No provider for HttpClient! 的问题但是我在 Karma 单元测试中遇到了更具描述性的错误。我一直在学习 Angu
当我在 Angular 8 项目中运行单元测试时,我在 ngx-toastr 中发现了一个错误 NullInjectorError: StaticInjectorError(DynamicTestMo
我是一名优秀的程序员,十分优秀!