运行 所有测试的框架与 运行 只有一项测试的框架不同,为什么?
Frame differs in running all test from running only one test, why?
如果我运行一次对一个史诗进行所有测试,只有第一个测试通过。其他测试失败是因为框架不同。但是每个测试都单独 运行 通过。
我找不到任何与此相关的问题,但在 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
实例来避免这种行为,但我不确定我是否应该这样做。
今天偶然发现了这个。我认为为每个测试创建一个新的 TestScheduler 可能是个好主意。它似乎在测试之间没有明显的影响 - 这样你就可以确定状态在测试之间被重置了。
另一种解决方法是在 beforeEach 中执行 testScheduler.frame = 0
- 但我选择每次都从头开始创建它。
如果我运行一次对一个史诗进行所有测试,只有第一个测试通过。其他测试失败是因为框架不同。但是每个测试都单独 运行 通过。
我找不到任何与此相关的问题,但在 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
实例来避免这种行为,但我不确定我是否应该这样做。
今天偶然发现了这个。我认为为每个测试创建一个新的 TestScheduler 可能是个好主意。它似乎在测试之间没有明显的影响 - 这样你就可以确定状态在测试之间被重置了。
另一种解决方法是在 beforeEach 中执行 testScheduler.frame = 0
- 但我选择每次都从头开始创建它。