问题标签 [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 投票
4 回答
2837 浏览

rxjs - 延迟测试 NGRX 效果

我想测试一个效果如下:

  1. 如果调度了 LoadEntriesSucces 操作,则效果开始
  2. 等待 5 秒
  3. 5 秒后发送 http 请求
  4. 当响应到达时,将分派新的操作(取决于响应是成功还是错误)。

Effect 的代码如下所示:

我要测试的是效果是否在 5 秒后发送:

但是这个测试对我不起作用。测试的输出如下所示:

我应该怎么做才能使这个测试工作?

0 投票
2 回答
1524 浏览

angular - 如何在ngrx效果中使用LatestFrom进行单元测试

我的效果是从 params 获取最新信息并将其传递到一个排气映射,然后调用一个服务。

一切都很酷。但是,我无法用它来测试我的一生。几乎我能找到的每一个例子都是无用的。

这是我的测试...

无论我对 store.select 模拟做什么,我都会返回“您在预期流的位置提供了‘未定义’。”

任何帮助表示赞赏。我真的希望我在弹珠上遗漏了一些东西。

0 投票
1 回答
4059 浏览

angular7 - TypeError: expect(...).toBeObservable 不是函数 - Jasmine marbles

我正在尝试编写一个基本的ngrx 效果测试。但是我不断收到错误,因为 TypeError: expect(...).toBeObservable is not a function。

这是 Angular 7 的新项目设置。我以前在 Angular 4 中运行的项目没有任何问题。

最初认为这可能与软件包有关,因此将所有软件包升级到最新但还没有运气。

我试图测试一个非常简单的 observable 作为 expect(effects.test$).toBeObservable(5); 但它给出了同样的错误。正如标题中提到的,我使用的是 jasmine-marbles,版本是 0.4.1。

0 投票
4 回答
2243 浏览

angular - Ngrx 效果规范将错误抛出为“未初始化测试调度程序”

尝试使用现有和最近迁移的 Angular 7 项目运行简单的效果测试。但我得到如下错误。

错误: 在 getTestScheduler (node_modules/jasmine-marbles/es6/src/scheduler.js:11:1) 在新的 TestHotObservable (node_modules/jasmine-marbles/es6/src/test-observables.js:21:39)没有初始化测试调度程序) 在 Module.hot (node_modules/jasmine-marbles/es6/index.js:7:1)

我在效果规范文件中的代码是使用 jasmine-marbles 进行的基本标准检查。

以前有没有人看到并解决过这个错误?

0 投票
0 回答
299 浏览

angular - 使用 jasmine-marbles 的 takeUntil-using NGRX 效果测试未按预期完成

给定两个 NGRX 效果(使用 nrwl/nx dataPersistence 表示法),其中第二个通过以下方式绑定到第一个takeUntil

目的是在 effectOne$ 发出后立即因 UI 输入而停止发出 SomeResultAction(效果很好)。

我现在正在尝试使用 jasmine-marbles 库来测试这些效果:

即使我希望expectedobservable 在interruptingAction发送后完成,此测试也会成功。

0 投票
0 回答
227 浏览

angular - Jasmine Marbles:测试用于处理 HTTP 的自定义 RXJS 运算符

我在这里编写了这个函数用于增量 Http 重试,但我对如何测试它有点困惑:

我假设我需要做这样的事情,但我不确定从那里去哪里,似乎需要一个模拟的 Http 调用而不是一个错误实例

但我要测试的是一个错误(给定一个总是失败的处理程序)将导致 5 个错误流。

0 投票
1 回答
1451 浏览

unit-testing - Marble 用茉莉花大理石测试受试者随时间的行为

所以我正在尝试测试一个主题的行为,但它不起作用,而且似乎有些事情我没有正确理解。考虑以下测试:

这将失败并显示以下错误消息:

我想我有点理解为什么:(Subject每个文档)仅在订阅开始后才发出值。该toBeObservable()函数(我假设)订阅了Subject,所以我的 2 个next调用发生在此之前,所以它们不会发出。

所以我的问题是,我将如何测试这样的东西?即随着时间的推移测试来自一个主题的一系列排放?这可能与大理石测试有关吗?我可以通过将其更改为 a 来使其工作,ReplaySubject但如果我这样做,大理石图必须是(xy)而不是xy.

谢谢。

0 投票
1 回答
288 浏览

angular - 如何告诉 Jasmine Marbles 将数组作为一个单元返回,而不是作为对观察者的两个单独调用

我正在编写的 Jasmine Marbles 测试是为数组中的每个元素调用一次 Observable,而我希望它调用 Observable 一次并传递整个数组。

这是测试代码;

在调试中,我看到 observable 被调用了两次:一次用于 CONVERSION_1,另一次用于 CONVERSION_2。但它需要做的是使用转换数组调用观察者一次。

0 投票
0 回答
78 浏览

angular - 如何正确测试角度服务流

我正在尝试测试一个看起来像这样的服务数据流:

使用以下几行的测试用例:

这行不通。我已经在测试代码上尝试了许多其他变体(比如直接使用 next() 通过 userInfo$(it's a BehaviorSubject) 发送信息)——但大多数情况下,我希望能给我更多关于这种场景的一般性建议.

0 投票
1 回答
1243 浏览

javascript - Jest 的 Marble 测试失败,但 Jasmine 的等效测试成功

我正在尝试将我的单元测试从 Jasmine 转换为 Jest。一些测试在将它们转换为 Jest 后开始失败。有人可以解释为什么他们会因为 Jest 而失败。

我设法将问题隔离到下面的测试用例中。

使用 Jasmine 运行成功:

使用 Jest 失败并显示以下错误跟踪:

笑话代码:

有人可以解释这种行为吗?

您可以在此处找到示例存储库:https ://github.com/stijnvn/marbles Jasmine 示例可以使用ng test jasmine-marbles. 开玩笑的ng test jest-marbles