如果我一次运行一个史诗的所有测试,则只有第一个测试通过。其他测试失败,因为框架不同。但是每个测试都单独通过。
我没有发现与此相关的任何问题,在RxJS中发现了某些内容,而不是redux可观察到的文档。
我以为TestScheduler
上可能有某种重置功能,但没有。
我的测试之一(它们看上去都很相似):
test('should fail if e-mail is missing', () => {
testScheduler.run(({ hot, expectObservable }) => {
const action$ = new ActionsObservable(
hot('-a', {
a: login('', 'secret')
})
);
const output$ = epic(action$, null, null);
expectObservable(output$).toBe('-a', {
a: failure(
formErrors.credentialsEmpty(['email', 'password'])
)
});
});
});
我希望输出大理石的帧为1,但为2。 测试失败的输出:
Array [
Object {
- "frame": 1,
+ "frame": 2,
"notification": Notification {
"error": undefined,
"hasValue": true,
"kind": "N",
"value": Object {
修改
我可以通过为每个测试创建一个TestScheduler
实例来解决该问题,但是我不确定是否应该这样做。
答案 0 :(得分:0)
今天偶然发现。我认为为每个测试创建一个新的TestScheduler可能是一个好主意。在两次测试之间似乎没有明显的影响-这样您就可以确定两次测试之间的状态已重置。
另一个解决方法是在beforeEach中执行testScheduler.frame = 0
-但我选择每次都从头开始创建它。