问题标签 [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 回答
674 浏览

rxjs - 如何让一个rxjs弹珠同步分组只占用一帧

根据https://github.com/ReactiveX/rxjs/blob/master/doc/writing-marble-tests.md

那么我如何表示“在第 20 帧,发出 a、b 和 c,然后在第 40 帧完成。

即我怎样才能停止同步组本身占用帧?

0 投票
1 回答
326 浏览

javascript - RxJs - 有损 zip 弹珠测试

这篇文章之后,我决定为这个运算符编写一个弹珠测试

这是一个基本的测试:

该测试按预期通过。但是,当我决定像这样发射两次排放时,它会失败:

我希望得到的 observable 看起来像这样:

或者至少是这样的:

然而,他们两个都失败了。

这是一个错误jasmine-marbles还是我的期望是错误的?

0 投票
1 回答
615 浏览

testing - 使用 jasmine-marbles 的 ngrx/effects 单元测试

当我尝试使用其中一个coldhot函数时jasmine-marbles,我不断得到TypeError: Class constructor Observable cannot be invoked without 'new'. 有人知道如何解决这个错误吗?这是我下面的内容。

0 投票
1 回答
1890 浏览

jasmine - RxJS 使用 Jasmine Marbles 测试 catch 运算符总是失败

我想测试一下,如果一个 observable 从它的一个操作符内部捕获了一个抛出的错误,我会得到预期的结果 observable。

下面的服务根据其错误参数返回一个是否引发错误的可观察对象。

有了这个茉莉花测试

对于第二次失败的测试,我得到了下面的输出。

0 投票
1 回答
6534 浏览

angular - 茉莉花大理石使用冷热的时间/框架问题

我有一个快速演示,人们可以在这里下载:https ://stackblitz.com/edit/angular-vczzqp只需点击右上角的导出,在您最喜欢的终端中,install然后ng test使用您最喜欢的浏览器运行。

对我来说,基本上问题似乎是 Jasmine 的内部时间与对象不匹配。

下面是测试以及我得到的确切错误。有关完整的测试类,请参阅 app/Test 下的示例

和错误

任何指导将不胜感激。

0 投票
1 回答
1058 浏览

rxjs5 - 在 RxJS 中测试异步管道操作符

有时我们有函数,它使用延迟等异步运算符修改原始源。

让我们假设我们有一些非常简单的东西:

我正在使用弹珠来测试 RxJs,所以我的测试看起来像:

rxjs 库中用于测试的内容几乎相同:https ://github.com/ReactiveX/rxjs/blob/master/spec/operators/delay-spec.ts

但是我们必须修补 Observable.delay 函数,因为我们无法直接访问它。而且效果很好。

但我们决定开始使用 RxJs 中的可管道操作符。有什么想法如何测试这个功能:

可能看起来像?

JsBin 演示

0 投票
1 回答
2551 浏览

rxjs - 无法从“jasmine-marbles.umd.js”中找到模块“rxjs/testing”

我目前想用 ngrx/effects 测试我的效果。我遵循了降价,但是当我想运行测试时出现错误。

这是我的代码(目前我没有做任何期望,我只想要我的测试运行):

这里是我的 package.json 的样子:

任何人都可以在这件事上帮助我吗?

0 投票
2 回答
1280 浏览

rxjs - 如何测试使用 rxjs 弹珠发出分组事件的可观察对象?

根据rxjs marbles 文档,同步分组的当前行为如下:

从文档:

虽然一开始可能不直观,但在所有值同步发出后,时间将前进的帧数等于组中 ASCII 字符的数量,包括括号

好的,但是我如何测试这样的可观察对象(使用弹珠或任何其他技术):

有什么解决方法吗?

Stack Overflow 上有一个类似的问题,但没有关于“如何实际解决它并测试这种可观察的”的答案。

谢谢!

0 投票
1 回答
160 浏览

angular - 带有模拟用户输入的 RxJs/Ngrx TestSheduler (Jasmine)

我正在一个角度应用程序中测试 Ngrx 商店效果。作为副作用,我的一个效果有一个使用材质 MatDialog 组件弹出的模态。

我想要做的是运行一个测试,其中效果由一个动作启动,这会触发垫子对话框的出现。然后我想测试单击是/否,然后继续检查结果操作(或缺少操作)。

我们正在使用 rxjs-marbles 来测试我们的商店。

RxJs 似乎并没有大量的示例,但我收集到我需要使用 TestScheduler 来处理这种类型的场景。不过,我不确定它是如何工作的。我正在做很多研究,但没有取得很大进展。

基本上,作为大理石,它看起来像这样:

-a-b-c

其中a是初始操作,b是用户在对话框中的点击,c是结果(c是可选的,如果用户点击“否”,则不会有结果操作。

我不是要求任何人编写我的代码,只是为我指明正确的方向。我即将开始阅读 TestScheduler 的源代码以更好地理解它,因为我什至不确定在这种情况下是否应该使用它。

基本上,如何编写这样的测试,其中有可观察的流与使用弹珠的模拟用户输入相结合?

0 投票
1 回答
1408 浏览

angular - NgRx Marbles 效果测试返回奇怪的错误

我有一个使用 NgRx 效果的 Angular 5 应用程序。其中一个效果通过将用户输入的数据传递到 NodeJS 后端来处理对网站的注册。效果完全按预期工作,但是当我尝试使用 Marbles 对其进行单元测试时,我收到了一个奇怪的错误。

这是效果:

这是 Marbles 的单元测试。它遵循 Todd Motto 的测试 NgRx 效果的指南。

最后,这是我在 Karma 中遇到的错误:

我从这个相当神秘的错误消息中推断出该trySignup动作已被触发,但不是该unsuccessfulSignup动作。有谁知道为什么会发生这种情况?

谢谢!