程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了尝试使用 Jasmine 对数据服务执行端到端测试时遇到空注入器错误大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_874_0@如何解决尝试使用 Jasmine 对数据服务执行端到端测试时遇到空注入器错误? 开发过程中遇到尝试使用 Jasmine 对数据服务执行端到端测试时遇到空注入器错误的问题如何解决?下面主要结合日常开发的经验,给出你关于尝试使用 Jasmine 对数据服务执行端到端测试时遇到空注入器错误的解决方法建议,希望对你解决尝试使用 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,请注明来意。