我正在尝试嘲笑“英雄之旅” Angular 2教程中的Heroes组件。但是我不知道如何模拟路由器,这是实例化HeroesComponent所必需的。我试图用Jasmine创建一个间谍,但这没有用,因为它缺少属性'RootComponentType'。
我该如何进行这项工作?
import {HeroesComponent} from "./heroes.component";
import {Router} from "@angular/router-deprecated";
import {HeroService} from "./hero.service";
describe('HeroesComponent', () => {
let heroes:HeroesComponent;
let router:Router;
let service:HeroService;
beforeEach(() => {
router = jasmine.createSpyObj('Router', ['navigate']);
service = new HeroService(/* I will care about this later */);
heroes = new HeroesComponent(router, service);
});
it('should be defined', () => {
expect(heroes).toBeDefined();
});
});
现在正在工作:
describe('HeroesComponent', () => {
let router:any;
let heroesComponent:HeroesComponent;
let service:HeroService;
beforeEach(() => {
router = new class {
navigate = jasmine.createSpy("navigate");
};
heroesComponent = new HeroesComponent(router, service);
});
it('should be defined', () => {
expect(heroesComponent).toBeDefined();
});
});
您可以直接在导航方法上创建间谍。
对DI使用addProviders:
beforeEach(() => addProviders([
{
provide: Router,
useClass: class { navigate = jasmine.createSpy("navigate"); }
}]));
对于组件的直接初始化:
let router;
let heroesComponent;
beforeEach(() => {
router = new class { navigate = jasmine.createSpy("navigate"); };
heroesComponent = new HeroesComponent(router);
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句