[英]Angular - Unit testing Subject()?
我有一个仅使用Subject的Angular服务,但是我不确定如何为它编写单元测试。
我看到了[this thread] [1],但没有发现它有很大帮助。
我试图模拟next()
但是我迷失了不少。
您应该监视service.serviceMsg
而不是service
,因为next()
方法似乎在serviceMsg
主题上。
it('should catch what is emitted', () => {
const nextSpy = spyOn(service.serviceMsg, 'next');
service.confirm(ACTION);
expect(nextSpy).toHaveBeenCalled();
});
编辑:
您还应该更改创建service
实例的方式。 您在代码中显示的内容仅适用于component
实例创建
beforeEach(() => {
TestBed.configureTestingModule({
providers: [MessageService]
});
service = TestBed.get(MessageService); // get service instance
httpMock = TestBed.get(HttpTestingController);
});
首先,您可以只订阅您的Subject
并在其中期望一些值,然后执行该方法即可发出该值:
it('should catch what is emitted', () => {
service.serviceMsg.subscribe(msg => {
expect(msg).toEqual(something);
});
service.confirm(value); // this should match what you expect above
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.