2
プロジェクトの単純な統合テストを実装しましたが、expect() save()メソッド。私がexpect()行をsetTimeout()に置くと、それは成功します。 setTimeout()なしで成功する方法?期待通りのスパイナビゲートが[['users']]で呼び出されましたが、インテグレーションテストで呼び出されたことはありませんCLI
spec.ts
import { Observable } from 'rxjs/Rx';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { DebugElement } from '@angular/core';
import { Router, ActivatedRoute } from '@angular/Router';
import { UserDetailsComponent } from './user-details.component';
import { RouterTestingModule } from '@angular/router/testing';
class RouterStub {
navigate(params) { };
}
class ActivatedRouteStub {
params: Observable<any> = Observable.empty();
}
describe('UserDetailsComponent',() => {
let component: UserDetailsComponent;
let fixture: ComponentFixture<UserDetailsComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [RouterTestingModule],
declarations: [UserDetailsComponent],
providers: [
{ provide: Router, useClass: RouterStub },
{ provide: ActivatedRoute, useClass: ActivatedRouteStub }
],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(UserDetailsComponent);
component = fixture.componentInstance;
});
it('should redirect the user to the users page after saving',() => {
let router = TestBed.get(Router);
let spy = spyOn(router, 'navigate');
component.save();
expect(spy).toHaveBeenCalledWith(['users']);
});
});
エラー:
Expected spy navigate to have been called with [ [ 'users' ] ] but it was never called