gpt4 book ai didi

Angular 2 : jasmin test case for activateRoute. snapshot.queryParams [""]

转载 作者:太空狗 更新时间:2023-10-29 18:19:50 27 4
gpt4 key购买 nike

我正在使用 ActiveRoute 从 url 读取一些值。

http://localhost:4200/project-test/#/add?orderId=156&customerNumber=431

我有单独的组件来读取 ngOnInit() 方法中的值。

片段:

...

constructor(private activatedRoute: ActivatedRoute,
public sanitizer: DomSanitizer,
private customerAPIService : CustomerAPIService) {}

ngOnInit() {

this.orderId = this.activatedRoute.snapshot.queryParams["orderId"];
...
}

测试用例:

import { TestBed } from '@angular/core/testing';
import { CreateCustomer } from './create-customer.component';
import { ActivatedRoute } from '@angular/router';
import { CustomerAPIService } from "app/repackaging/service/customer.api.service";

describe('CreateCustomer', () => {
let component;

let mockActiveRoute;
let mockCustomerAPIService;
let mockQueryParamMap;

beforeEach(() => {

mockQueryParamMap = jasmine.createSpyObj('mockQueryParamMap', ['queryParams']);
mockActiveRoute = {queryParamMap: mockQueryParamMap};

TestBed.configureTestingModule({
providers : [
{
provide: ActivatedRoute,
useFactory: () => mockActiveRoute
},
{
provide: CustomerAPIService,
userFactory: () => mockCustomerAPIService
}
],
declarations :[
CreateCustomer
]
});

component = TestBed.createComponent(CreateCustomer).componentInstance;
});

it('should run ngOninit function', function () {
component.ngOnInit();

...

});
});

我在编写测试时遇到错误

TypeError: undefined is not an object (evaluating 'this.activatedRoute.snapshot.queryParams') http://localhost:9876/_karma_webpack_/main.bundle.js (第 350 行)

最佳答案

扩展@peeskillet 的回答。

有一个愚蠢的错误,就像我在模拟 queryParamMap 而不是 snapshot.queryparams。

http://localhost:4200/project-test/#/add?order=156&customerNumber=431

下面是mock activeroutes.snapshot.queryparams["order"]的解决方案。

 let orderId; 
let customerNumber;

let mockActiveRoute;
...

beforeEach(() => {
...

mockActiveRoute = {
snapshot: {
queryParams: {
order: orderId,
customerNumber: customerNumber
}
}
};
});

关于 Angular 2 : jasmin test case for activateRoute. snapshot.queryParams [""],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45672053/

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