gpt4 book ai didi

javascript - 在不发出值的情况下完成的 Rxjs 可观察通过单元测试,但不应该

转载 作者:行者123 更新时间:2023-11-30 19:16:20 25 4
gpt4 key购买 nike

我有以下通过的单元测试,但它不应该因为从未发出预期值。

这是一个重现问题的简化示例:

it('should fail but value is skipped', done => {
of(1).pipe(
skip(1)
).subscribe(
v => expect(v).toBe(1),
() => done.fail(),
() => done()
);
});

我可以修改上面的代码以强制至少一个值,但最初的问题是错误有一段时间没有被注意到.似乎 Jest 很高兴在没有调用 expect() 时通过单元测试。

it('still passes', done => {
done();
});

it('same here' () => {});

如果可观察对象是在测试的外部创建的,这将变得更难发现。

it('should fail but value is never emitted', done => {
someFunction().subscribe(
v => expect(v).toBe(1),
() => done.fail(),
() => done()
);
});

上面的单元测试按预期通过了,但是后来的一个错误使 observable 完成而没有发出值,测试仍然通过。

如果 expect() 从未被调用,是否有办法将 Jest 配置为失败?

如果没有这样的功能,那么我可以做些什么来测试异步代码?

最佳答案

有方法expect.assertions(number)它验证在测试期间调用了一定数量的断言。

所以你可以这样修改测试:

it('should fail but value is never emitted', () => {
expect.assertions(1);
someFunction().subscribe(v => expect(v).toBe(1));
});

关于javascript - 在不发出值的情况下完成的 Rxjs 可观察通过单元测试,但不应该,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57957860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com