Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误:预期未定义为真实。angular 8的KARMA JASMINE单元测试用例_Angular_Typescript_Unit Testing_Karma Jasmine - Fatal编程技术网

错误:预期未定义为真实。angular 8的KARMA JASMINE单元测试用例

错误:预期未定义为真实。angular 8的KARMA JASMINE单元测试用例,angular,typescript,unit-testing,karma-jasmine,Angular,Typescript,Unit Testing,Karma Jasmine,在angular 8中运行karma jasmine单元测试用例时出现以下错误 组件:管理对话框>onModalCancel 错误:预期未定义为真实。 我已经提供了我的规范和打字脚本文件。请说明为什么我被期望是真实的。提前适当 规格文件 import { AdminDialogComponent } from "./admin-dialog.component"; import {TestBed, ComponentFixture, async, inject, tick, fakeAsync}

在angular 8中运行karma jasmine单元测试用例时出现以下错误

组件:管理对话框>onModalCancel 错误:预期未定义为真实。

我已经提供了我的规范和打字脚本文件。请说明为什么我被期望是真实的。提前适当

规格文件

import { AdminDialogComponent } from "./admin-dialog.component";
import {TestBed, ComponentFixture, async, inject, tick, fakeAsync} from '@angular/core/testing';
import { FormsModule } from "@angular/forms";
import { BrowserDynamicTestingModule } from '@angular/platform-browser-dynamic/testing';
import {TranslateModule,TranslateService} from "@ngx-translate/core";
import {Inject, NO_ERRORS_SCHEMA} from "@angular/core";
import {MAT_DIALOG_DATA, MatDialog, MatDialogModule, MatDialogRef} from '@angular/material/dialog';
import { OverlayContainer } from '@angular/cdk/overlay';
import {HttpClientModule} from "@angular/common/http";
import {RouterTestingModule} from "@angular/router/testing";
import {DataService} from "../../../services/data.service";
import {of} from "rxjs/internal/observable/of";

describe('Component: admin-dialog', () => {

  let component: AdminDialogComponent;
  let fixture: ComponentFixture<AdminDialogComponent>;
  let translate: TranslateService;
  let dialog: MatDialog;
  let overlayContainer: OverlayContainer;
  let dataService: DataService;
  beforeEach(() => {
    TestBed.configureTestingModule({
      imports: [FormsModule, MatDialogModule, HttpClientModule,RouterTestingModule,TranslateModule.forRoot()],
      declarations: [AdminDialogComponent],
      providers: [TranslateService,
        { provide: MatDialogRef, useValue: {addPanelClass: ()=>{'close-modal'} }},
        {
          provide: MAT_DIALOG_DATA, useValue: {
            isNew: false, // I guess it's boolean
            adminObj: {firstName: "AAAAAA", lastName: "AA", password: null, emailId: "test@test.com"}
          }
        },
        {provide: dataService, useValue: {}}
      ],
      schemas: [NO_ERRORS_SCHEMA]
  });
    TestBed.overrideModule(BrowserDynamicTestingModule, {
      set: {
        entryComponents: [AdminDialogComponent]
      }
    });
    TestBed.compileComponents();
    fixture = TestBed.createComponent(AdminDialogComponent);
    component = fixture.componentInstance;
  });
  beforeEach(inject([MatDialog, OverlayContainer],
    (d: MatDialog, oc: OverlayContainer) => {
      dialog = d;
      overlayContainer = oc;
    })
  );
  afterEach(() => {
    overlayContainer.ngOnDestroy();
  });
  it('should create', () => {
    expect(component).toBeTruthy();
  });
  it("onModalCancel", () => {
      expect(component.onModalCancel()).toBeTruthy();
  });

});
从“/admin dialog.component”导入{AdminDialogComponent}”;
从“@angular/core/testing”导入{TestBed,ComponentFixture,async,inject,tick,fakeAsync};
从“@angular/forms”导入{FormsModule};
从“@angular/platform browser dynamic/testing”导入{browser DynamicTestingModule};
从“@ngx translate/core”导入{TranslateModule,TranslateService}”;
从“@angular/core”导入{Inject,NO_ERRORS_SCHEMA};
从“@angular/material/DIALOG”导入{MAT_DIALOG_数据、MatDialog、MatDialogModule、MatDialogRef};
从'@angular/cdk/overlay'导入{OverlayContainer};
从“@angular/common/http”导入{HttpClientModule};
从“@angular/router/testing”导入{RouterTestingModule}”;
从“../../../services/data.service”导入{DataService}”;
从“rxjs/internal/observable/of”导入{of};
描述('组件:管理对话框',()=>{
let组件:AdminDialogComponent;
let夹具:组件夹具;
让翻译:翻译服务;
let dialog:MatDialog;
让OverlyContainer:OverlyContainer;
让数据服务:数据服务;
在每个之前(()=>{
TestBed.configureTestingModule({
导入:[FormsModule、MatDialogModule、HttpClientModule、RouterTestingModule、TranslateModule.forRoot()],
声明:[AdminDialogComponent],
提供者:[翻译服务,
{provide:MatDialogRef,useValue:{addPanelClass:()=>{'close-modal'}},
{
提供:材料对话框数据,使用值:{
isNew:false,//我猜它是布尔值
adminObj:{firstName:“AAAAAA”,lastName:“AA”,密码:null,emailId:test@test.com"}
}
},
{提供:数据服务,使用值:{}
],
架构:[无错误\u架构]
});
TestBed.overrideModule(浏览器动态测试模块{
设置:{
entryComponents:[AdminDialogComponent]
}
});
TestBed.compileComponents();
fixture=TestBed.createComponent(AdminDialogComponent);
组件=fixture.componentInstance;
});
beforeach(注入([MatDialog,OverlyContainer],
(d:MatDialog,oc:OverlyContainer)=>{
dialog=d;
覆盖容器=oc;
})
);
之后(()=>{
overlycontainer.ngondstroy();
});
它('应该创建',()=>{
expect(component.toBeTruthy();
});
它(“onModalCancel”,()=>{
expect(component.onModalCancel()).toBeTruthy();
});
});
Ts文件

import {Component, Inject, OnInit} from "@angular/core";
import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material";
import {DataService} from "../../../services/data.service";
@Component({
  selector: 'admin-dialog',
  templateUrl: './admin-dialog.component.html',
  styleUrls: ['./admin-dialog.component.scss']
})
export class AdminDialogComponent implements OnInit {
  public accessHasSelected : any ='';
  public errorObj : any = {};
  public checkBoxSelected : boolean;
  public adminObj: any = {
    active:true,
    firstName:"",
    lastName:"",
   // emailId:"",
    access:[]
  };
  /***
   *
   * @param dialogRef
   * @param data
   * @param fromGroup
   * @param dataService
   */
  constructor(
    public dialogRef: MatDialogRef<AdminDialogComponent>,
    @Inject(MAT_DIALOG_DATA) public data: any,
    private dataService: DataService) {

    if (this.data.isNew){
      this.newAdmin();
    }
    else {
      this.editAdmin(this.data.adminObj);
    }
  }
  /*
  * This method will get called while loading new admin modal.
  * */
  newAdmin() {
    this.dataService.getAllAdminAccess().subscribe(
      response => {
        this.adminObj.access = response.access;
      },
      error => { });
  }
  /***
   * This method will get called while loading edit existing admin modal.
   * @param response
   */
  editAdmin(response){
    console.log(response);
    this.dataService.getAdminDetails(response.emailId).subscribe(
      response => {
        //component related success actions
        this.adminObj = response;
      },
      error => {});
  }
  /**
   *
   */
  ngOnInit() {}
  onModalCancel(): void {
    this.dialogRef.addPanelClass('close-modal');
    setTimeout(()=>{
      this.dialogRef.close();
    },500);
  }
}
import{Component,Inject,OnInit}来自“@angular/core”;
从“@angular/material”导入{MAT_DIALOG_DATA,MatDialogRef}”;
从“../../../services/data.service”导入{DataService}”;
@组成部分({
选择器:“管理对话框”,
templateUrl:“./admin dialog.component.html”,
样式URL:['./admin dialog.component.scss']
})
导出类AdminDialogComponent实现OnInit{
公共访问权:任意=“”;
public errorObj:any={};
选中公共复选框:布尔值;
公共管理对象:任意={
主动:对,
名字:“,
姓氏:“,
//电子邮件ID:“”,
访问:[]
};
/***
*
*@param dialogRef
*@param数据
*@param fromGroup
*@param数据服务
*/
建造师(
公共dialogRef:MatDialogRef,
@注入(MAT_DIALOG_DATA)公共数据:任意,
专用数据服务:数据服务){
if(this.data.isNew){
this.newAdmin();
}
否则{
this.editAdmin(this.data.adminObj);
}
}
/*
*加载新的管理模式时将调用此方法。
* */
newAdmin(){
this.dataService.getAllAdminAccess().subscribe(
响应=>{
this.adminObj.access=response.access;
},
错误=>{});
}
/***
*加载“编辑现有管理模式”时将调用此方法。
*@param响应
*/
编辑管理员(回应){
控制台日志(响应);
this.dataService.getAdminDetails(response.emailId).subscribe(
响应=>{
//与组件相关的成功行动
this.adminObj=响应;
},
错误=>{});
}
/**
*
*/
ngOnInit(){}
onModalCancel():void{
this.dialogRef.addPanelClass('close-modal');
设置超时(()=>{
this.dialogRef.close();
},500);
}
}
ngOnInit()未返回任何值。因此,它显示未定义

要检查函数是否已定义,您可以编写如下测试用例:

it("onModalCancel", () => {
      expect(component.onModalCancel).toBeDefined();
  });

@Buczkowski你能在这方面帮助我吗?为什么你要测试void函数,就像它返回一个布尔值一样?@Alexus如何涵盖
onModalCancel()的测试用例