- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我看到很多人发布关于 NullInjectorError: No provider for HttpClient!
的问题但是我在 Karma 单元测试中遇到了更具描述性的错误。我一直在学习 Angular 和 Javascript/Typescript、HTML 和 CSS/SCSS,所以就我的基础而言,我到处都有点不稳定。我该如何解决这个错误?对于那些说是因为OP忘记导入测试模块的人,我已经导入了测试模块。这是我的测试文件的样子。当我注释掉 html 中的所有内容时,我仍然收到此错误。另外,我试图 stub ApiService。
错误:
NullInjectorError: R3InjectorError(DynamicTestModule)[ApiService -> HttpClient -> HttpClient]:
NullInjectorError: No provider for HttpClient!
error properties: Object({ ngTempTokenPath: null, ngTokenPath: [ 'ApiService', 'HttpClient', 'HttpClient' ] })
at <Jasmine>
at NullInjector.get (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:915:1)
at R3Injector.get (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:11082:1)
at R3Injector.get (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:11082:1)
at injectInjectorOnly (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:801:1)
at ɵɵinject (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:805:1)
at Object.ApiService_Factory [as factory] (ng:///ApiService/ɵfac.js:5:38)
at R3Injector.hydrate (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:11249:1)
at R3Injector.get (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:11071:1)
at NgModuleRef$1.get (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:24199:1)
at Object.get (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:22102:1)
news.component.spec.ts
的内容
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
// import { HttpClient } from '@angular/common/http';
import { of } from 'rxjs';
import { NewsComponent } from './news.component';
import { ApiService } from '../api.service';
describe('NewsComponent: show/hide button',() => {
let component: NewsComponent;
let fixture: ComponentFixture<NewsComponent>;
const paragraphs = document.querySelectorAll("input");
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ NewsComponent ],
// here is my imported Http TestingModule
imports: [ HttpClientTestingModule ],
providers: [
{ provide: ApiService, useClass: FakeApiService }
]
})
.compileComponents();
}));
beforeAll(() => {
fixture = TestBed.createComponent(NewsComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
});
class FakeApiService {
fakeVal = 5;
getNews() {
}
}
最佳答案
您可以通过在 app.mdoule.ts 的步骤中执行以下操作来解决问题
import { HttpClientModule, HttpClient } from '@angular/common/http';
imports: [
HttpClientModule
]
providers: [HttpClient]
第一步是简单地在您的应用程序中导入相关的服务/模块,以便您可以进行 http 调用,第二步在您当前的模块中导入 httpClientModule,最后一步确保您可以实际使用 HttpClient 服务
关于angular - NullInjectorError : R3InjectorError(DynamicTestModule)[ApiService -> HttpClient -> HttpClient]: NullInjectorError: No provider for HttpClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64037998/
我在 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
我是一名优秀的程序员,十分优秀!