Ngrx Effects规范将错误抛出为“未初始化测试调度程序". [英] Ngrx Effects spec throws Error as "No test scheduler initialized"
问题描述
尝试对现有的和最近迁移的Angular 7项目运行简单的效果测试.但是我收到如下错误.
Trying to run a simple effects test with an existing and recently migrated Angular 7 project. But I get error as below.
错误:未初始化测试计划程序在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)
Error: No test scheduler initialized at getTestScheduler (node_modules/jasmine-marbles/es6/src/scheduler.js:11:1) at new TestHotObservable (node_modules/jasmine-marbles/es6/src/test-observables.js:21:39) at Module.hot (node_modules/jasmine-marbles/es6/index.js:7:1)
我的效果规范文件中的代码是使用茉莉花大理石进行的基本标准检查.
My code in effects spec file is basic standard check with jasmine-marbles.
const action = new Load(request);
const completion = new LoadSuccess(result);
actions$ = hot('-a-', { a: action});
const response = cold('-a|', {a: result});
const expected = cold('--b', {b: completion});
service.getSomething.and.returnValue(result);
expect(effects.load$).toBeObservable(expected);
以前有没有人看到并解决过此错误?
Has anyone seen and resolved this error before?
推荐答案
尽管改用ES5可以解决此问题,但我的同事却提出了一个更好的解决方案.解决方案是在src/test.ts文件中添加以下行.我更喜欢它,因为它可以继续在ES6中进行测试.
Although changing to ES5 fixed the problem, my colleague has come up with a better solution. Solution is to add the following lines in src/test.ts file. I like it better as it allows to continue testing in ES6.
import { addMatchers, getTestScheduler, initTestScheduler, resetTestScheduler } from 'jasmine-marbles';
// configure matchers for jasmine-marbles
jasmine.getEnv().beforeAll(() => {
return addMatchers();
});
jasmine.getEnv().beforeEach(() => {
initTestScheduler();
});
jasmine.getEnv().afterEach(() => {
getTestScheduler().flush();
resetTestScheduler();
});
这篇关于Ngrx Effects规范将错误抛出为“未初始化测试调度程序".的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!