问题标签 [rxjs-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.
jasmine - 测试 NGRX 效果,延迟发出动作或不发出任何东西
我有一个 NGRX 效果 - 根据状态 - 发出延迟的动作或什么都不发出。我想写一个测试,涵盖这两种情况。
这是效果:
测试它应该发出带有延迟的 otherAction 的情况可以正常工作:
但我不知道如何测试另一个状态,它不应该发出另一个动作(流的长度为零):
请帮忙 :)
rxjs - rxjs asapscheduler 的执行顺序
考虑到我有以下代码:
我使用 asapScheduler 运算符。
根据文档,
asap 将等待当前同步执行的代码结束,然后它会尝试尽快执行给定的任务。
上述代码的执行顺序是什么?它们是如何工作的?我没想到最后会打印tap3
下面是输出,
typescript - 为什么在弹珠测试 Observables 时会出现 3 个额外的帧?
我正在测试以下 redux-observable 史诗:
我编写了两个类似的测试来验证 loginSuccess 和 loginFail 是否正常工作:(我排除了一些模拟操作):
登录成功
登录失败
它们都在工作,但是,测试框架说它预计比之前的测试多 3 帧。我不明白为什么。我希望有人可以向我解释。
javascript - 使用 rxjs 进行弹珠测试时如何暂停和恢复虚拟时间?
我正在尝试为同时具有反应性元素和非反应性元素的对象编写测试。我不知道如何写大理石图,所以测试是清晰的。
在下面的测试中,我有一个我正在测试的对象,它既存储一个值又将它发布给一个主题。我想编写测试,以便可以发出一些值、停止虚拟时间并检查一些断言。然后,我想恢复虚拟时间。所以,我想我想使用flush
.
下面的测试成功,但不清晰:大理石图source2
和expected2
不对齐,所以我不能真正“看到”测试是否正确编写。如果我source2
在第一次调用上面定义expectObservable
,那么第二次调用expectObservable
永远不会看到任何值。
我尝试将订阅运算符添加^
到source
,但似乎没有帮助。我还尝试使用冷的可观察对象,但我仍然无法编写弹珠,所以一切都很好地排列:
有没有办法编写此测试以使其看起来正确?
testing - Redux-observable 测试和丢失我的 Marbles
我想测试这个 observable 但我什么也没得到:
测试如下:
我得到的结果是:
● fetchUsersEpic › 应该获取用户
expect(received).toStrictEqual(expected) // 深度相等
- 预计 - 18
- 收到 + 1
显然我在这里遗漏了一些东西,我认为返回的值应该是带有一些数据的 fetchUsersSuccess() 回调,但我们得到的是一个空数组。能得到一些想法会很棒。
angular - TS 说对象属性在显示时不存在
我遇到了一个问题,我在一个存根函数的返回值上收到一条错误消息,它模拟了 Observable 的返回(使用rxjs-marbles
)。
我遇到的问题是错误消息似乎表明返回类型上不存在对象的属性。
从单元测试文件
我收到以下类型错误:
如您所见,searchStatus
它声称在 上不存在的属性Object literal
就在错误消息中显示的类型定义中。它似乎没有抱怨其他属性。
请注意,这SearchStatus
是一个枚举类型。
一切对我来说似乎都很好,那么为什么我会收到这个错误?
这是一个推断类型,所以我虽然可能有助于使函数的返回显式,但它没有帮助,我仍然有同样的问题。
对于进一步的上下文,如果需要,这里是函数,函数本身依赖。第一个函数是提供打字稿用来推断预期回报的详细信息的函数。
angular - Rxjs 弹珠测试:如何模拟用户与 observables 的交互
我想测试一个 Angular 服务,我将简化我的案例以使其简单:
我有一个behaviourSubject 绑定到我的服务中的一个可观察对象
我要测试的是多次填写用户名的简单用户交互:
但是当我启动这个测试时,只有主体发出的最后一个值在 observable 中。
有没有办法在不将 BehaviorSubject 更改为 ReplaySubject 的情况下在 observable 中获取 2 个值?
angular - 如何在大理石测试中从服务中模拟 observable
我想测试一个包含我的逻辑的 Angular 服务。我将简化我的案例以使其简单明了:
我有我想要测试的 logic$,它绑定到 data$,另一个 observable
我希望能够在我的测试中模拟数据并查看我的逻辑是否按预期运行
我收到以下错误:
据我所知,显然我的模拟不起作用。logic$ 的长度为 1,数据仅发出 '' (由 behaviorSubject 发出) .
有没有办法正确替换 observable 来测试服务中的逻辑?