use*_*080 4 typescript ngrx angular angular-unit-test angular8
这是我的 ts 文件:
this.store.pipe(select(subscribe.getRegCategories)).pipe(takeUntil(this.ngUnsubscribe)).subscribe(data => {
if (data && data.length) {
this.allRegCategories = data;
}
});
Run Code Online (Sandbox Code Playgroud)
当我去测试时出现错误:
this.store.pipe(select(subscribe.getRegCategories)).pipe(takeUntil(this.ngUnsubscribe)).subscribe(data => {
TypeError: Cannot read property 'pipe' of undefined
Run Code Online (Sandbox Code Playgroud)
这里如何提供管道?解决这个问题的正确方法是什么?
这是我的测试规范文件:
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { Store, select } from '@ngrx/store';
import { RouterTestingModule } from '@angular/router/testing';
import { HttpClientModule } from '@angular/common/http';
import { ShellViewProgMgmtComponent } from './shell-view-prog-mgmt.component';
import { ViewProgMgmtComponent } from './../../components/view-prog-mgmt/view-prog-mgmt.component';
import * as actions from './../../state/actions/setup-config.actions';
describe('ShellViewProgMgmtComponent', () => {
let component: ShellViewProgMgmtComponent;
let fixture: ComponentFixture<ShellViewProgMgmtComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ShellViewProgMgmtComponent, ViewProgMgmtComponent],
imports: [HttpClientModule, RouterTestingModule],
providers: [
{
provide: Store,
useValue: {
dispatch: jest.fn(),
pipe: jest.fn()
}
}
]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ShellViewProgMgmtComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
describe('ngOnInit()', () => {
it('should dispatch an event resetEditPage action in ngOnit lifecycle', () => {
const store = TestBed.get(Store);
const action = actions.resetEditPage();
const spy = jest.spyOn(store, 'dispatch');
fixture.detectChanges();
expect(spy).toHaveBeenCalledWith(action);
});
});
});
Run Code Online (Sandbox Code Playgroud)
请不要嘲笑自己的商店。
相反,使用MockStore和/或模拟选择器,因为它会让你的生活更轻松。如果您想要的话,您可以查看实现以了解如何创建模拟商店。
有关测试使用 NgRx 的项目的更多信息,请参阅测试 NgRx 项目。
| 归档时间: |
|
| 查看次数: |
2317 次 |
| 最近记录: |