我试图为一个具有Subject属性和调用.next()方法的angular服务编写测试。
该服务如下:
@Injectable()
export class SubjectService {
serviceSubjectProperty$: Subject<any> = new Subject();
callNextOnSubject(data: any) {
this.serviceSubjectProperty$.next(data);
}
}
以及该服务的测试文件:
import { TestBed, inject } from '@angular/core/testing';
import { SubjectService } from './subject.service';
describe('SubjectService', () => {
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
SubjectService
]
});
});
it('callNextOnSubject() should emit data to serviceSubjectProperty$ Subject',
inject([SubjectService], (subjectService) => {
subjectService.callNextOnSubject('test');
subjectServiceProperty$.subscribe((message) => {
expect(message).toBe('test');
})
}));
});
即使我将subjectService.callNextOnSubject
的参数从'test'
更改为其他任何内容,测试始终会通过。
我还尝试使用async
和fakeAsync
包装所有内容,但结果是相同的。
如何正确测试是否callNextOnSubject
正在向serviceSubjectProperty$
主题发出数据?