我正在使用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'信号其执行结束。 –