问题标签 [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.
unit-testing - 与测试中的所有可观察对象相比,如何刷新一个冷可观察对象?
getTestScheduler().flush()
刷新测试中的所有 observables。有没有办法细粒度地刷新可观察对象?
例如cold('--x', {x: {}}).flush()
angular - 如何用茉莉弹珠测试主题
Angular 6、Rxjs、Jest、Jasmine-marbles。
非常常见的场景:搜索服务器端项目的组件。在组件中,有一些控件可以更改搜索条件,我想以“反应式”进行编码。所以在组件代码中我有这样的东西:
也就是说,Subject
每次 UI 中的某些内容发生更改时都会触发搜索条件。
现在我想测试一下,搜索服务只会被调用以获取不同的输入。我可以用这种方式“没有弹珠”:
现在我想用jasmine marbles转换这个测试,但我不知道如何......
我想要这样的东西:
显然,它不起作用...
更新
以某种方式关闭...使用“测试助手”
angular - 使用 jest 和 jasmine-marbles 测试 ngrx 效果时的问题
我正在使用jest
并jasmine-marbles
测试我的ngrx-effects
. 到目前为止一切顺利,但我有一个特殊情况,我需要使用它withLatestFrom
来访问Store
内部效果,如下所示:
我也确实像这样设置了我的测试:
我还注意到我成功地为Store
和设置了模拟,Actions
因为所有其他测试都可以正常工作。这与其他之间的唯一区别是Store
和withLatestFrom
在这些效果中不存在。
最后这是我得到的错误输出:
有什么想法吗?
unit-testing - RxJS Marble 测试:expectObservable 与 toBeObservable
有什么区别:
和
句法?
是一个测试库的问题还是只是一个味道?
angular - rxjs-marbles 测试没有任何期望
我使用rxjs-marbles在我的 Angular 7 应用程序中测试 observables。但它看起来m.expect
并没有被茉莉认可为预期。
我有以下测试:
当我运行它时,我在控制台中收到错误:
同样在浏览器输出中,我的测试前缀为:
SPEC HAS NO EXPECTATIONS should see expectations
添加expect(true).toBe(true);
解决了这个问题,但这并不是我真正想要的方式。
如何注册m.expect
为茉莉花的期望?
rxjs - ngrx + 大理石测试 + 延迟
假设我有效果
大理石测试应该是什么样子?
作为回报,我得到
angular - 如何对进行中 RXJS 请求的取消进行单元测试
我正在使用 NGRX,并使用 Effects 发送 HTTP 请求。如果用户发送另一个请求,则应取消任何先前的请求。当我手动测试时它工作正常,但我希望能够对此进行单元测试。为了测试这一点,我模拟了发送 HTTP 请求并在一定延迟后发送响应的服务。然后,我有一个触发 4 个请求的 Marble hot observable。我希望我的效果只触发一次。但是,它根本没有被触发。
单元测试:
所以,我发送了 4 个搜索请求;第一个应该在 6 秒后返回数据,第二个应该在 5 秒后返回数据,依此类推。但是,我的单元测试失败了 loadData$ 是一个空的可观察对象,而它期望有一个项目。
如果我删除间谍中的延迟,它会按预期工作,并且 loadData$ 包含 4 个结果。
我的效果是使用 NX DataPersistence,如果您提供 id 函数,它会负责取消;如果新的操作带有相同的 id,它将取消初始请求。类似于使用 this.actions$.pipe(switchMap(...))
angular - 在 RxJs 和 Angular 中测试可观察的“下一个”回调
我正在尝试使用 RxJs Observables 在 Angular 中做一个非常简单的测试,但我做不到。这就是我基本上要测试的内容:
当后面的可观察对象发出一个值testMe
时,我如何测试它是否正确更新?methodReturningObservable
我用这个尝试过:
所以,tick()
这里似乎没有做任何事情。没有什么能让我cold
对我的间谍产生任何价值。
我尝试了,如大理石部分下的https://netbasal.com/testing-observables-in-angular-a2dbbfaf5329getTestScheduler.flush()
所示。
我可以使用这样的弹珠在可观察对象上发出值吗?只需触发摘要,这在 AngularJS 中非常容易,但我似乎无法让 Anguar 让我进入下一个可观察对象的回调。
angular - 单元测试 - 获取 TypeError:您在预期流的位置提供了无效对象
我正在尝试进行单元测试,其中效果使用服务从 API 获取结果,然后触发成功操作或错误操作。我不断收到错误TypeError: You provided an invalid object where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.
。不完全确定需要更改哪些内容才能使其正常工作。
包括错误检查测试和相关代码。
角
测试
影响
服务
更新:添加了 debounce 以触发弹珠错误。还是需要替代的withLatestFrom
。
angular - 如何使用 jasmine-marbles 测试 forkJoin() 运算符
我创建了将数据发送到后端的服务,数据由用户在 UI 中填充。用户也可以上传任何文件以将其发送到后端。我正在尝试用茉莉弹珠测试此功能。
这是我的服务代码:
如果用户添加一个或多个附件,那么在我将用户数据发送到后端之前,我需要将每个附件上传到后端以获取每个附件的令牌,然后我将其存储在数组中。我正在这样做forkJoin()
,等到所有附件都上传完毕,然后switchMap
用于提交用户数据。
这是我的两个测试用例(一个工作,一个不工作):
测试表单数据在哪里没有附件是成功的,但是测试表单数据在哪里有附件失败。
失败的错误信息:
✖ 提交附件 HeadlessChrome 71.0.3578 (Mac OS X 10.14.2) 错误:预期 $.length = 0 等于 2。预期 $[0] = 未定义等于 Object({ frame: 10, notification: Notification({ kind :'N',值:['token'],错误:未定义,hasValue:真})})。预期 $[1] = undefined 等于 Object({ frame: 40, notification: Notification({ kind: 'N', value: Object({ id: 'id_123' }), error: undefined, hasValue: true }) } )。
似乎output
is not emitting observable in failed test and is undefined
,但问题是 - 为什么?因为在另一个测试中,它在不发送附件和使用forkJoin()
.
任何人都知道为什么会这样?谢谢!