问题标签 [jasmine-marbles]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
748 浏览

angular - jasmine-marbles 接下来只发出第一个值

我有一些这样的弹珠:

当我打电话时:

x 和 y 都被发射。但是,我想这样做:

这可能吗?如果是这样,我该如何实现?谢谢

我正在寻找getTestScheduler().next()类似于您在 RxJs 主题上调用 next 的方式 - 也许它会在弹珠中发出下一个项目,或者如果下一个项目是“-”,它不会发出任何内容......不完全确定如何它会起作用,但希望你能明白我所追求的要点。

0 投票
1 回答
142 浏览

angular - RxJS:为什么订阅没有区别

考虑以下服务示例

在此服务中,我正在检查是否允许用户查看特定资源。

这就是我试图测试它的方式

测试的目的是检查资源缓存是否有效。但我注意到的是,如果我替换以下代码段

用简单

测试仍然有效,我是 RxJS 和大理石测试的新手,但据我所知,Observable 在订阅之前不应该工作。

问题 - 为什么它是双向的?

0 投票
0 回答
887 浏览

angular - 带有茉莉花弹珠的 Ngrx 测试选择器:预期 $.length = 1 到等于 2

我正在尝试测试一个简单的加载器组件,该组件从我制作的 ngrx 选择器中获取其状态。选择器提供了一个对象(接口名称为 LoaderState){queue: number},我将其映射为布尔值以显示或隐藏加载器。

为了测试它,我正在使用来自ngrx的茉莉花弹珠和mockStore。我正在覆盖选择器,我正在创建一个具有预期值的预期冷可观察对象,然后我使用期望是可观察的。

我已按照ngrx 文档Angular Up conf 中的教程进行操作。

组件

规格

我希望测试通过并且代码运行没有问题,但是测试失败并且导致的错误是:

0 投票
1 回答
869 浏览

angular - 为什么在单元测试ngrx-effect时出现此错误

我正在为 ngrx 效果编写单元测试。我尝试了所有方法,但似乎无法克服此错误:

我要测试的效果是:

单元测试:

由于效果返回的操作“getVendorsSuccess”填充了正确的数据,我怀疑问题出在这部分:

任何建议将不胜感激

0 投票
1 回答
1185 浏览

angular - 如何使用茉莉弹珠测试 Observable 订阅中的代码

我有一个组件订阅从 ngOnInit 中的服务返回的 observable。我也有方法(updateData),它从服务订阅 observable,但也更新订阅中的一些属性。我需要创建一个测试来检查调用 updateData 时此属性是否更改为正确的值。

组件片段:

测试设置

我想添加那些缺失的行,以便测试通过。任何帮助,将不胜感激。

0 投票
1 回答
325 浏览

rxjs - RxJS 测试:大理石测试混淆案例

我正在向我的 angular/rxjs 项目添加单元测试,并且我正在使用该marble test解决方案。而且由于我使用的是较新版本的 rxjs,所以我使用了内置的“TestScheduler”模块。

我正在关注这篇文章:https ://brianflove.com/2018/06/28/ngrx-testing-effects/ ,它举了一个例子如下:

单元测试如下:

我可以理解这里的逻辑(大理石字符串)期望一个令人困惑的点:

为什么不--b|呢?由于响应 observable|cold('-a|', { a: user });.

顺便说一句,在这篇文章中,它将使用第三方库,但我使用的是原生库,TestScheduler并且结果相同。

0 投票
1 回答
915 浏览

ngrx-effects - 如何正确使用 jasmine-marbles 测试 ofType 中的多个操作

我有一个效果,每次它接收一个以上“种类”的动作时都会调用它

myEffect.effect.ts

在我的测试中,我试图“模拟两种不同的动作,但我总是以错误告终,而如果我尝试使用一个动作,它就可以完美运行

在每个部分之前

这完美地工作

这不起作用

0 投票
1 回答
2633 浏览

angular - Angular Unit Test:如何使用大理石测试(rxjs/testing)来测试这个状态管理服务

在我的 Angular 项目中,我有一个服务,用于状态管理以在组件之间共享一些数据,如下所示:

状态管理基于 subject 和 observable,这是 rxjs 世界中的典型用法。

对于此服务的单元测试,我想使用rxjs/testing模块支持的大理石测试功能。解决方案如下:

但是第二个单元测试失败并出现错误:Error: Expected $.length = 0 to equal 1.所以这意味着nameStateService.filteredNames$,这个 observable 在它的流中没有值。

这里有什么问题?

0 投票
1 回答
1545 浏览

angular - 可观察到的特殊结果:使用 Jasmine 弹珠进行测试

我正在使用 Jest 测试 Angular 7 中的一个小功能。该函数如下所示:

如您所见,目前它所做的只是从其输入创建一个可观察对象,但它正在开发中并将被扩展。

我正在像这样用 Jest 测试它:

但是,由于一些时间问题,测试失败了。可expected观察的结果如下所示:

从函数调用创建的 observablehotspotService['checkFreeProduct'](allowance)如下所示:

现在我不完全确定为什么这些可观测物会产生两种排放,但我会同意的。我不明白为什么函数调用中的 observable 会在第 0 帧上发出两个事件。我都尝试过hot()and cold(),并在这些调用中尝试了各种弹珠,但没有任何乐趣。有人可以解释一下吗?

0 投票
0 回答
43 浏览

angular - Jasmine Marbles 的单元测试不包括代码覆盖率报告中的代码

当我使用 Jasmine 弹珠对 margeMap 和 switchMap 进行单元测试时,这些特定块不会包含在代码覆盖率报告中。

有没有办法对 margeMap 和 switchMap 块进行单元测试,以便在代码覆盖率报告中涵盖它们?