【发布时间】:2018-01-16 04:31:19
【问题描述】:
假设这样的服务:
@Injectable()
export class PageNavService {
private _expanded = true;
private pageNavExpanded = new Subject<any>();
public togglePageNav(): void {
this._expanded = !this._expanded
this.pageNavExpanded.next(this._expanded);
}
public setPageNavState(expanded) {
this._expanded = expanded;
this.pageNavExpanded.next(this._expanded);
}
public getPageNavState(): Observable<any> {
return this.pageNavExpanded.asObservable();
}
constructor() { }
}
如何测试togglePageNav() 方法?
这是我的尝试:
describe('PageNavService', () => {
let service;
let state;
beforeEach(() => TestBed.configureTestingModule({
providers: [PageNavService]
}));
beforeEach(inject([PageNavService], svc => {
service = svc;
service.getPageNavState().subscribe((s) => {
state = s;
});
}));
describe('togglePageNav method', () => {
it('should reverse the navbar state', () => {
service.togglePageNav();
expect(state).toBeTruthy();
});
});
});
但是,测试失败了:
预期为假为真。
【问题讨论】:
-
getPageNavState是一个方法,你必须调用它(service.getPageNavState()而不是service.getPageNavState) -
谢谢你,解决了语法错误,但测试仍然失败,好像没有返回 observable。
标签: angular unit-testing angular-services