簡體   English   中英

Angular 單元測試,如何將一個主題測試為可觀察的

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM