在路由参数改变时测试ngrx存储操作调度,可以按照以下步骤进行:
下面是一个示例代码,演示了如何在路由参数改变时测试ngrx存储操作调度:
import { TestBed, fakeAsync, tick } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { Router } from '@angular/router';
import { Store } from '@ngrx/store';
import { of } from 'rxjs';
describe('MyComponent', () => {
let router: Router;
let store: jasmine.SpyObj<Store<any>>;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [RouterTestingModule],
providers: [
{ provide: Store, useValue: jasmine.createSpyObj('Store', ['dispatch', 'select']) }
]
});
router = TestBed.inject(Router);
store = TestBed.inject(Store) as jasmine.SpyObj<Store<any>>;
});
it('should dispatch store operation when route parameters change', fakeAsync(() => {
// 模拟路由参数的改变
router.navigate(['/my-route', { param: 'new-value' }]);
// 模拟存储操作的调度
store.select.and.returnValue(of({}));
store.dispatch.and.returnValue(of({}));
// 等待存储操作的调度完成
tick();
// 验证存储操作的调度是否符合预期
expect(store.dispatch).toHaveBeenCalledWith({ type: 'MY_ACTION', payload: 'new-value' });
}));
});
在上述示例代码中,我们使用了Angular的测试工具和jasmine的Spy对象来模拟路由参数的改变和存储操作的调度,并验证存储操作的调度是否符合预期。
请注意,上述示例代码中的存储操作和路由参数的改变是示意性的,你需要根据实际情况进行相应的修改和适配。
推荐的腾讯云相关产品:腾讯云云服务器(CVM),腾讯云云原生容器服务(TKE)
腾讯云云服务器(CVM)产品介绍链接地址:https://cloud.tencent.com/product/cvm
腾讯云云原生容器服务(TKE)产品介绍链接地址:https://cloud.tencent.com/product/tke
领取专属 10元无门槛券
手把手带您无忧上云