问题标签 [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.
rxjs - 延迟测试 NGRX 效果
我想测试一个效果如下:
- 如果调度了 LoadEntriesSucces 操作,则效果开始
- 等待 5 秒
- 5 秒后发送 http 请求
- 当响应到达时,将分派新的操作(取决于响应是成功还是错误)。
Effect 的代码如下所示:
我要测试的是效果是否在 5 秒后发送:
但是这个测试对我不起作用。测试的输出如下所示:
我应该怎么做才能使这个测试工作?
angular - 如何在ngrx效果中使用LatestFrom进行单元测试
我的效果是从 params 获取最新信息并将其传递到一个排气映射,然后调用一个服务。
一切都很酷。但是,我无法用它来测试我的一生。几乎我能找到的每一个例子都是无用的。
这是我的测试...
无论我对 store.select 模拟做什么,我都会返回“您在预期流的位置提供了‘未定义’。”
任何帮助表示赞赏。我真的希望我在弹珠上遗漏了一些东西。
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。
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 进行的基本标准检查。
以前有没有人看到并解决过这个错误?
angular - 使用 jasmine-marbles 的 takeUntil-using NGRX 效果测试未按预期完成
给定两个 NGRX 效果(使用 nrwl/nx dataPersistence 表示法),其中第二个通过以下方式绑定到第一个takeUntil
:
目的是在 effectOne$ 发出后立即因 UI 输入而停止发出 SomeResultAction(效果很好)。
我现在正在尝试使用 jasmine-marbles 库来测试这些效果:
即使我希望expected
observable 在interruptingAction
发送后完成,此测试也会成功。
angular - Jasmine Marbles:测试用于处理 HTTP 的自定义 RXJS 运算符
我在这里编写了这个函数用于增量 Http 重试,但我对如何测试它有点困惑:
我假设我需要做这样的事情,但我不确定从那里去哪里,似乎需要一个模拟的 Http 调用而不是一个错误实例
但我要测试的是一个错误(给定一个总是失败的处理程序)将导致 5 个错误流。
unit-testing - Marble 用茉莉花大理石测试受试者随时间的行为
所以我正在尝试测试一个主题的行为,但它不起作用,而且似乎有些事情我没有正确理解。考虑以下测试:
这将失败并显示以下错误消息:
我想我有点理解为什么:(Subject
每个文档)仅在订阅开始后才发出值。该toBeObservable()
函数(我假设)订阅了Subject
,所以我的 2 个next
调用发生在此之前,所以它们不会发出。
所以我的问题是,我将如何测试这样的东西?即随着时间的推移测试来自一个主题的一系列排放?这可能与大理石测试有关吗?我可以通过将其更改为 a 来使其工作,ReplaySubject
但如果我这样做,大理石图必须是(xy)
而不是xy
.
谢谢。
angular - 如何告诉 Jasmine Marbles 将数组作为一个单元返回,而不是作为对观察者的两个单独调用
我正在编写的 Jasmine Marbles 测试是为数组中的每个元素调用一次 Observable,而我希望它调用 Observable 一次并传递整个数组。
这是测试代码;
在调试中,我看到 observable 被调用了两次:一次用于 CONVERSION_1,另一次用于 CONVERSION_2。但它需要做的是使用转换数组调用观察者一次。
angular - 如何正确测试角度服务流
我正在尝试测试一个看起来像这样的服务数据流:
使用以下几行的测试用例:
这行不通。我已经在测试代码上尝试了许多其他变体(比如直接使用 next() 通过 userInfo$(it's a BehaviorSubject) 发送信息)——但大多数情况下,我希望能给我更多关于这种场景的一般性建议.
javascript - Jest 的 Marble 测试失败,但 Jasmine 的等效测试成功
我正在尝试将我的单元测试从 Jasmine 转换为 Jest。一些测试在将它们转换为 Jest 后开始失败。有人可以解释为什么他们会因为 Jest 而失败。
我设法将问题隔离到下面的测试用例中。
使用 Jasmine 运行成功:
使用 Jest 失败并显示以下错误跟踪:
笑话代码:
有人可以解释这种行为吗?
您可以在此处找到示例存储库:https ://github.com/stijnvn/marbles
Jasmine 示例可以使用ng test jasmine-marbles
. 开玩笑的ng test jest-marbles
。