当您订阅rxjs时,如果测试失败,您如何向测试发送信号?
我是一个完全的初学者。 我遇到的问题是,一旦我在rxjs observable中抛出一个错误,我的测试就不知道了。当我订阅一个测试时,它在rxjs中失败,它只是抛出一个错误,我需要通知我的测试发生了错误。这里有一个更简单的例子,表明“测试失败”从未打印出来当您订阅rxjs时,如果测试失败,您如何向测试发送信号?,rxjs,rxjs-pipeable-operators,rxjs-observables,Rxjs,Rxjs Pipeable Operators,Rxjs Observables,我是一个完全的初学者。 我遇到的问题是,一旦我在rxjs observable中抛出一个错误,我的测试就不知道了。当我订阅一个测试时,它在rxjs中失败,它只是抛出一个错误,我需要通知我的测试发生了错误。这里有一个更简单的例子,表明“测试失败”从未打印出来 import { sample } from "rxjs/operators"; const source = interval(1000); // sample last emitted value from source every 2s
import { sample } from "rxjs/operators";
const source = interval(1000);
// sample last emitted value from source every 2s
// output: 2..4..6..8..
const example = source.pipe(sample(interval(2000)));
async function test_runner() {
setup();
try {
await test();
console.log("test succeeded");
} catch (e) {
console.log("test failed");
}
}
async function setup() {
console.log("setup");
const subscribe = example.subscribe((val) => {
console.log(val);
if (val === 4) { throw Error("error!"); }
});
}
async function test() {
console.log("test");
await waitMs(10000);
}
test_runner();
async function waitMs(waitTime: number): Promise<void> {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve();
}, waitTime);
});
}
从“rxjs/operators”导入{sample};
常数源=间隔(1000);
//每2秒对源的上次发射值进行采样
//输出:2..4..6..8。。
const-example=source.pipe(样本(间隔(2000));
异步函数测试\u runner(){
设置();
试一试{
等待测试();
console.log(“测试成功”);
}捕获(e){
console.log(“测试失败”);
}
}
异步函数设置(){
控制台日志(“设置”);
const subscribe=example.subscribe((val)=>{
控制台日志(val);
如果(val==4){抛出错误(“错误!”;}
});
}
异步函数测试(){
控制台日志(“测试”);
等待waitMs(10000);
}
test_runner();
异步函数waitMs(waitTime:number):Promise{
返回新承诺((解决、拒绝)=>{
设置超时(()=>{
解决();
},等候时间);
});
}
有办法解决这个问题吗?非常感谢您的帮助。如果您想测试rx流,最好的方法之一就是使用大理石图。 这就是ngrx用于效果测试的内容 使用大理石图,您可以在期望发出/错误的地方编写样式并断言它
例如,syntax
hot('--#')
表示30毫秒后流中出现错误。如果要测试rx流,最好的方法之一是使用大理石图。
这就是ngrx用于效果测试的内容
使用大理石图,您可以在期望发出/错误的地方编写样式并断言它
例如,syntax
hot('--#')
表示30毫秒后流中出现错误。订阅时,可以将函数传递给:
- 处理流发出的项
- 处理错误
- 处理完成信号
descripe('流发出错误时',()=>{
它('应该调用您的错误处理程序',()=>{
const stream$=投掷者('wat?!');
流$.subscribe({错误:(err)=>{
期待(错误=='wat?!')。成为真实;
}});
});
});代码>
常数{throwError}=rxjs;
摩卡咖啡设置(“bdd”);
mocha.run()代码>订阅时,您可以将函数传递给:
- 处理流发出的项
- 处理错误
- 处理完成信号
您也可以在测试中使用它:
descripe('流发出错误时',()=>{
它('应该调用您的错误处理程序',()=>{
const stream$=投掷者('wat?!');
流$.subscribe({错误:(err)=>{
期待(错误=='wat?!')。成为真实;
}});
});
});代码>
常数{throwError}=rxjs;
摩卡咖啡设置(“bdd”);
mocha.run()代码>