我正在重写我的一些代码,以使用管道运算符代替“补丁”运算符,并且我对何时使用pipe()
以及如何订阅管道{{1}感到困惑。 }如果我只想要副作用,可以“激活”它?
例如,我有以下代码:
Observable
我在这里感到困惑是因为我认为自己想做this.messages$ = this.messageService.getMessages(messageType)
.do((messages: Message[]) => {
console.log('The first message is ' + deviceMessages[0].text);
});
,所以我得到了一个this.messageService.getMessages(messageType).pipe(...)
返回并分配给Observable
的信息,但是由于我没有{ {1}}。但是如果我做this.messages$
,它将返回一个subscribe()
对象,这不是我想要的。
我在这里应该做什么?
答案 0 :(得分:2)
好吧,只需这样做:
it('should get current user', async () => {
const response = new CustomResponseClass();
response.success = true;
response.error = null;
const user = new User();
user.userId = 1;
user.name = 'Test User';
response.data = user;
service.getCurrentUser().then( _user => {
console.log('USER', _user);
// TODO: Some more unit tests here...
});
const req = httpMock.expectOne('/api/me');
expect(req.request.method).toEqual('GET');
req.flush(response);
});
tap运算符等效于rxjs 5及更高版本中的this.messages$ = this.messageService.getMessages(messageType).pipe(
tap((messages: Message[]) => {
console.log('The first message is ' + deviceMessages[0].text);
})
);
this.messages$.subscribe();
。