sta*_*247 7 unit-testing jasmine karma-jasmine angular angular-test
零件:
@Component({
selector: 'app-test',
templateUrl: './test.component.html'
})
export class TestComponent implements OnInit {
useCase: string;
constructor(
private route: ActivatedRoute,
) {}
ngOnInit() {
this.route.queryParams.subscribe(p => {
if (p) {
this.useCase = p.u;
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
测试规格
describe('TestComponent', () => {
let component: TestComponent;
let fixture: ComponentFixture<TestComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
AppModule
],
providers: [
{ provide: ActivatedRoute, useValue: ??? }
]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(TestComponent);
component = fixture.componentInstance;
});
it('should create', () => {
expect(component).toBeTruthy();
expect(component.useCase).toBeFalsy();
});
it('should set useCase variable with query string value', () => {
fixture.detectChanges();
// Set different route.queryParams here...
expect(component.useCase).toBe('success');
});
});
Run Code Online (Sandbox Code Playgroud)
使用Angular 6,Karma和Jasmine进行单元测试.
我知道我们可以设置ActivatedRoute一个将在整个测试中使用的对象,如下所示:
providers: [
{ provide: ActivatedRoute, useValue: {
queryParams: Observable.of({id: 123})
} }
]
Run Code Online (Sandbox Code Playgroud)
但这将设置所有测试用例的值.有没有办法动态更改ActivatedRoute每个不同的测试用例?
Sur*_*iya 12
如果要将其存储在变量中,可以在其函数中使用TestBed.get(ActivatedRoute)来获取它.您也可以更新值.
| 归档时间: |
|
| 查看次数: |
2857 次 |
| 最近记录: |