gpt4 book ai didi

Angular 5 - 我们如何测试 router.navigate([id],{relativeTo : this. _activatedRoute}])

转载 作者:行者123 更新时间:2023-12-05 06:32:33 25 4
gpt4 key购买 nike

我想在 jasmine, karma 中测试这个功能。测试此功能的首选方法是什么。

功能测试(负载){
this._router.navigate([this.result.id], {relativeTo: this._activatedRoute})
}

我已经写了规范测试这个。

it('navigate to redirects', function(){
let router=TestBed.get(Router);
let spy = spyOn(router,"navigate");

const payload: any = {
event:{
body:{
result:{
collections: 0,
data: [],
errors: [],
errors_count: 0,
meta: {},
upload_id: "r1q3oFQfX"
}
}
}
};

// console.log("##################id=",payload.event.body.result.upload_id);
component.test(payload);
fixture.detectChanges();
expect(spy).toHaveBeenCalledWith([payload.event.body.result.upload_id])
});

我也创建了假类

class RouterStub{
navigate(params){
console.log("parames",params)
}
}

并添加到 configuraTestModule 中

 providers: [
{provide: ENGINE_CONFIG,Store,Actions,Router,useValue:routerStub,

}]

最佳答案

我假设您在您的组件中使用 (_router: Router)。

所以在你的测试中会添加这些行

class MockRouterService {
navigate() { }
}

const mockRouterService = new MockRouterService();

TestBed.configureTestingModule({
imports: [
...,
RouterTestingModule,
],
providers: [
{
provide: Router,
useValue: mockRouterService,
},
],
})
.compileComponents();

上面的代码将帮助您使用仅包含您要测试的功能的假类来模拟 Router 服务。
那你就

it('should call navigate', () => {
spyOn(mockRouterService, 'navigate');
component.test(abc);
expect(mockRouterService.navigate).toHaveBeenCalled();
});

或者你可以像这样测试更具体的

it('should call navigate with correct params', () => {
spyOn(mockRouterService, 'navigate');
this._activatedRoute = 'your route';
component.test({id: 1});
expect(mockRouterService.navigate).toHaveBeenCalledWith([1], {relativeTo: 'your route'});
});

关于Angular 5 - 我们如何测试 router.navigate([id],{relativeTo : this. _activatedRoute}]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51204836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com