错误:预期间谍导航被调用:[ [ '/client/register' ] ],但从未调用过



错误应使用[['/client/register']]调用间谍导航,但从未调用过。这就是我犯的错误。此外,我不知道如何测试cookie值,因为它是第三方包。我尝试了这个链接预期间谍导航是用[[';users';]]调用的,但在集成测试angular CLI中从未调用过,但它对我不起作用。

注册组件规范

import { RegisterComponent } from './../register/register.component';
import { MockAuthService } from './../../../mock/mockAuth.service';
import { AuthService } from './../../../services/auth/auth.service';
import { HttpClient } from '@angular/common/http';
import { MockProjectService } from './../../../mock/mockProject.service';
import { MustMatchDirective } from './../../../directive/must-match.directive';
import { FormsModule } from '@angular/forms';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { SignupComponent } from './signup.component';
import { RouterTestingModule } from '@angular/router/testing';
import { Router } from '@angular/router';
describe('SignupComponent', () => {
let component: SignupComponent;
let fixture: ComponentFixture<SignupComponent>;
let service:MockAuthService;
let mockRouter 
beforeEach(async(() => {
mockRouter = { navigate: jasmine.createSpy('navigate') };
TestBed.configureTestingModule({
declarations: [ RegisterComponent, SignupComponent, MustMatchDirective],
imports: [
RouterTestingModule.withRoutes([
{ path: 'client/register', component: RegisterComponent }
]),
FormsModule
],
providers: [
{
provide: AuthService,
useClass: MockAuthService
},
{ provide: Router, useValue: mockRouter},
]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(SignupComponent);
component = fixture.componentInstance;
service = TestBed.get(AuthService);
fixture.detectChanges();
});
it('should navigate to register pgae when server return success message', () => {
component.onSubmit();
expect(mockRouter.navigate).toHaveBeenCalledWith(['/client/register']); 
})

});

注册组件.ts

import { Component, OnInit, ViewChild } from '@angular/core';
import { Router } from '@angular/router';
import { CookieService } from 'ngx-cookie-service';
import { AuthService } from './../../../services/auth/auth.service';

@Component({
selector: 'app-signup',
templateUrl: './signup.component.html',
styleUrls: ['./signup.component.scss']
})
export class SignupComponent implements OnInit {
model: any = {};
constructor(public router: Router, private cookieService: CookieService, private authService: AuthService) { }
ngOnInit(): void { }
onSubmit() {
this.authService.signup(this.model).subscribe((response)=>{ 
this.cookieService.set( 'token', response['token'],1 );
console.log(response)
this.router.navigate['/client/register'];
})
}
}

这是一个您正在尝试测试的异步代码,因此请尝试asyncwhenStable,类似于以下内容:

it('should navigate to register pgae when server return success message', async(() => {
component.onSubmit();
fixture.whenStable().then(() => {
fixture.detectChanges();
expect(mockRouter.navigate).toHaveBeenCalledWith(['/client/register']); 
});
}));

最新更新