我正在嘗試將一個主題測驗為可觀察的,但它沒有按預期作業
為了簡單起見,我在 getService2Test subscribe 中洗掉了額外的邏輯
以下是我在服務類中的功能
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 中的代碼從未執行過。我還收到一條警告訊息“……沒有期望。”
uj5u.com熱心網友回復:
您的測驗用例不會等待您的訂閱,而是立即完成。要解決此問題,請像這樣實作決議回呼:
it('Testing getTest()', done => {
spyOn(service2,'getService2Test').and.returnValue(of("success"));
service.getTest().subscribe((result)=>{
// verify results
done();
});
});
笑話檔案
uj5u.com熱心網友回復:
謝謝菲利克斯,我已經測驗過了,下面的代碼可以作業
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();
});
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/430884.html
上一篇:亂數的單元測驗
