[英]Angular unit test, how to test a subject as observable
我正在嘗試測試一個可觀察的主題,但它沒有按預期工作
為了簡單起見,我刪除了 getService2Test 訂閱中的額外邏輯
下面是我的 function 在職 class
getTest():Observable<string>{
let subject = new Subject<string>();
service2.getService2Test().subscribe(result=>{
subject.next(result.success); // result.success = "testing"
subject.complete();
});
return subject.asObservable();
}
下面是我的測試用例
it('Testing getTest()',()=>{
spyOn(service2,'getService2Test').and.returnValue(of("success"));
service.getTest().subscribe((result)=>{
expect(result).toEqual("testing"); // never gets invoked in testing
console.log("Output result: "+result); // not able to see any message
});
});
subscribe 中的代碼從未執行過。 我還收到一條警告消息“...沒有期望。”
您的測試用例不會等待您的訂閱並立即完成。 要解決此問題,請像這樣實現解析回調:
it('Testing getTest()', done => {
spyOn(service2,'getService2Test').and.returnValue(of("success"));
service.getTest().subscribe((result)=>{
// verify results
done();
});
});
謝謝 Felix,我已經測試過並且下面的代碼有效
it('Testing getTest()', done => {
spyOn(service2,'getService2Test').and.returnValue(of("success").pipe(delay(0)));
service.getTest().subscribe((result)=>{
console.log(result); // Prints my results
done();
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.