大佬教程收集整理的这篇文章主要介绍了尝试使用 Jasmine 对数据服务执行端到端测试时遇到空注入器错误,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在尝试使用 Jasmine 对数据服务执行端到端测试时遇到空注入器错误。
NullinjectorError: R3InjectorError(DynamicTestModulE)[Databaseservice -> AngularFirestore -> InjectionToken angularfire2.app.options -> InjectionToken angularfire2.app.options]: NullinjectorError:没有 InjectionToken angularfire2.app.options 的提供者!
如果我运行 'ng test' 总是显示这个错误
Databaseservice > should be created
NullinjectorError: R3InjectorError(DynamicTestModulE)[Databaseservice -> AngularFirestore -> InjectionToken angularfire2.app.options -> InjectionToken angularfire2.app.options]:
NullinjectorError: No provIDer for InjectionToken angularfire2.app.options!
error propertIEs: Object({ ngTempTokenPath: null,ngTokenPath: [ 'Databaseservice','AngularFirestore','InjectionToken angularfire2.app.options','InjectionToken angularfire2.app.options' ] })
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.AngularFirestore_Factory [as factory] (http://localhost:9876/_karma_webpack_/node_modules/@angular/fire/__ivy_ngcc__/fesm2015/angular-fire-firestore.Js:869:149)
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 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)
Expected undefined to be truthy.
Error: Expected undefined to be truthy.
at <Jasmine>
at UserContext.<anonymous> (http://localhost:9876/_karma_webpack_/src/app/shared/database/database.service.spec.ts:14:21)
at ZoneDelegate.invoke (http://localhost:9876/_karma_webpack_/node_modules/zone.Js/dist/zone-evergreen.Js:364:1)
这是我的database.service.spec.ts
import { TESTBed } from '@angular/core/tesTing';
import { Databaseservice } from './database.service';
describe('Databaseservice',() => {
let service: Databaseservice;
beforeEach(() => {
TESTBed.configureTesTingModule({});
service = TESTBed.inject(DatabaseservicE);
});
it('should be created',() => {
expect(servicE).toBeTruthy();
});
});
database.service.ts
import { Injec@R_404_5991@ } from '@angular/core';
// firebase
import { AngularFirestore } from '@angular/fire/firestore';
import firebase from "firebase/app";
import { environment } from 'src/environments/environment.prod';
@Injec@R_404_5991@({
provIDedIn: 'root'
})
export class Databaseservice {
public frb: any = firebase;
public allCollections = {
users: 'users',};
constructor(
public afs: AngularFirestore,) {}
// create
adddocument(collection:string,docObject:any){
return this.afs.collection(collection).add(docObject);
}
}
这里是 app.module.ts
中的所有 angularfire 模块import { NgModule } from "@angular/core";
import { browserModule } from "@angular/platform-browser";
import { RouteReuseStrategy } from "@angular/router";
import { PathLOCATIOnStrategy,LOCATIOnStrategy } from "@angular/common";
import { IonicModule,IonicRouteStrategy } from "@ionic/angular";
import { SplashScreen } from "@ionic-native/splash-screen/ngx";
import { Statusbar } from "@ionic-native/status-bar/ngx";
import { AppRoutIngModule } from "./app-routIng.module";
import { AppComponent } from "./app.component";
import { httpClIEntModule } from "@angular/common/http";
// firebase
import { AngularFireModule } from "@angular/fire";
import { AngularFireAuthModule } from "@angular/fire/auth";
import { AngularFireDatabaseModule } from "@angular/fire/database";
import { AngularFirestoreModule } from "@angular/fire/firestore";
import { AngularFirestore } from "@angular/fire/firestore";
import { environment } from "../environments/environment";
import { FormsModule,ReactiveFormsModule } from "@angular/forms";
// ion2-calendar
import { CalendarModule } from "ion2-calendar";
@NgModule({
declarations: [AppComponent],entryComponents: [],imports: [
browserModule,IonicModule.forRoot(),AppRoutIngModule,AngularFireModule.initializeApp(environment.firebaseConfig),AngularFireAuthModule,AngularFireDatabaseModule,AngularFirestoreModule,AngularFirestore,CalendarModule,httpClIEntModule,FormsModule,ReactiveFormsModule,],provIDers: [
Statusbar,SplashScreen,{ provIDe: RouteReuseStrategy,useClass: IonicRouteStrategy },{ provIDe: LOCATIOnStrategy,useClass: PathLOCATIOnStrategy },bootstrap: [AppComponent],})
export class AppModule {}
package.Json
{
"name": "****","version": "0.0.1","author": "Ionic Framework","homepage": "https://ionicframework.com/","scripts": {
"ng": "ng","start": "ng serve","build": "ng build","test": "ng test","lint": "ng lint","e2e": "ng e2e"
},"private": true,"dependencIEs": {
"@angular/common": "~10.0.0","@angular/core": "~10.0.0","@angular/fire": "^6.0.4","@angular/forms": "~10.0.0","@angular/platform-browser": "~10.0.0","@angular/platform-browser-dynamic": "~10.0.0","@angular/router": "~10.0.0","@capacitor/androID": "^2.4.5","@capacitor/core": "2.4.5","@codetrix-studio/capacitor-Google-auth": "^2.1.3","@ionic-native/core": "^5.0.0","@ionic-native/splash-screen": "^5.0.0","@ionic-native/status-bar": "^5.0.0","@ionic/angular": "^5.0.0","@ionic/pwa-elements": "^3.0.2","firebase": "^8.2.7","firebaseui": "^4.7.1","ion2-calendar": "^3.5.0","moment": "^2.24.0","rxJs": "~6.5.5","talisman": "^1.1.4","tslib": "^2.0.0","zone.Js": "~0.10.3"
},"devDependencIEs": {
"@angular-devkit/build-angular": "~0.1000.0","@angular/cli": "~10.0.5","@angular/compiler": "~10.0.0","@angular/compiler-cli": "~10.0.0","@angular/language-service": "~10.0.0","@capacitor/cli": "2.4.5","@ionic/angular-toolkit": "^2.3.0","@types/jasmine": "~3.5.0","@types/jasminewd2": "~2.0.3","@types/node": "^12.11.1","codelyzer": "^6.0.0","jasmine-core": "~3.5.0","jasmine-spec-reporter": "~5.0.0","karma": "~5.0.0","karma-Chrome-launcher": "~3.1.0","karma-coverage-istanbul-reporter": "~3.0.2","karma-jasmine": "~3.3.0","karma-jasmine-HTML-reporter": "^1.5.0","protractor": "~7.0.0","ts-node": "~8.3.0","tslint": "~6.1.0","typescript": "~3.9.5"
},"description": "An Ionic project"
}
@H_874_0@解决方法
错误有点具体
没有 InjectionToken angularfire2 的提供者
您的导入中缺少 Angular Fire
TESTBed.configureTesTingModule({});
我没有使用过 AngularFire,但由于您需要导入 AngularFireModule
的错误。下面试试
TESTBed.configureTesTingModule({
AngularFireModule.initializeApp(environment.firebaseConfig),AngularFireAuthModule,AngularFireDatabaseModule,AngularFirestoreModule,AngularFirestore,});
以上是大佬教程为你收集整理的尝试使用 Jasmine 对数据服务执行端到端测试时遇到空注入器错误全部内容,希望文章能够帮你解决尝试使用 Jasmine 对数据服务执行端到端测试时遇到空注入器错误所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。