【发布时间】:2018-07-01 13:34:27
【问题描述】:
我正在使用 Jasmine/Karma 对 Angular 服务进行单元测试。我想确认我的服务正确过滤了项目。
例如,如果我有一项服务可以让超过一定年龄的人,它
- 应该返回超过最低年龄的人(阳性案例)
- 不应退回未满最低年龄的人(否定情况)
这是我正在努力测试的 #2。
服务:
getPeople(minAge: number): Observable<string> {
const source = Observable.from([
{ name: 'Joe', age: 30 },
{ name: 'Frank', age: 20 },
{ name: 'Ryan', age: 50 }
]);
return source
.filter(person => person.age >= minAge)
.map(person => person.name);
}
正面单元测试
it('should return people over 30', () => {
const service = new MyService();
const minAge = 30;
service.getPeople(minAge).subscribe(people => {
expect(people.length).toBeGreaterThan(0);
});
});
还有负单元测试
it('should not return people over 55', () => {
const service = new MyService();
const minAge = 55;
service.getPeople(minAge).subscribe(people => {
expect(people.length).toBe(0); // WE NEVER GET HERE!
});
});
在否定的情况下,Observable 永远不会返回任何东西,这是正确的。但是,如何编写单元测试来确认这一点?
【问题讨论】:
标签: angular unit-testing jasmine rxjs observable