我正在使用Nodejs,RxJS和Typescript開發應用程序。使用chai和mocha在nodejs中觀察結果的簡單測試
應用程序有它返回一個可觀察的字符串
myObsFunction() : Observable<string> {
... do stuff
}
我希望能夠做一個簡單的測試來檢查,當我訂閱了這個功能我得到預期的字符串的函數。我使用柴和摩卡,所以我寫了下面的測試情況
import { expect } from 'chai';
import 'mocha';
import {myObsFunction} from './my-source-file';
describe('myObsFunction function',() => {
it('check myObsFunction',() => {
const expectedString = 'abc';
let receivedString: string;
myObsFunction().subscribe(
data => receivedString = data,
error => console.error(error),
() => expect(receivedString).to.equal(expectedString)
)
});
});
不幸被我預期這個測試用例不起作用。它始終表現爲即使在出現錯誤的情況下也能成功通過。 expect
檢查我已經寫在onCompleted
函數不會發出任何信號,即使expectedString不等於receivedString。實際執行的onCompleted
功能(我可以看到這個剛剛加入的onCompleted
功能console.log
指令),但預計不會發出信號時出現錯誤
有沒有什麼辦法,而無需啓動運行這樣簡單的測試任何錯誤使用調度程序和更復雜的機制?
看來'myObsFunction'異步運行,所以你需要使用''的回調it'到done'信號其執行結束。 –