Javascript 角度测试模块设置不正确:Can';t解析所有参数(ngrx)

Javascript 角度测试模块设置不正确:Can';t解析所有参数(ngrx),javascript,angular,typescript,ngrx,Javascript,Angular,Typescript,Ngrx,我有一个Angular CLI 6项目,我正试图让测试在其中工作。以下是我的测试中的一个片段: beforeEach(() => { spyOn(console, 'info'); TestBed.configureTestingModule({ providers: [ ConsoleLoggerEffects, provideMockActions(() => actions), ], }); effects = Tes

我有一个Angular CLI 6项目,我正试图让测试在其中工作。以下是我的测试中的一个片段:

beforeEach(() => {
  spyOn(console, 'info');

  TestBed.configureTestingModule({
    providers: [
      ConsoleLoggerEffects,
      provideMockActions(() => actions),
    ],
  });

  effects = TestBed.get(ConsoleLoggerEffects);
});
ConsoleLoggerEffects
注入了一个依赖项,
操作可以观察到:


@可注射()
导出类控制台效果{
构造函数(私有操作$:操作){}
}

这完全是按照计划进行的,但不起作用

当我去运行测试时,Angular抱怨
错误:无法解析ConsoleLogEffects:(?)的所有参数。
我向传递给
provideMockActions
的工厂函数添加了
console.log
,但它从未执行过,因此工厂函数甚至没有被调用

即使我不使用
provideMockActions
并自己指定一个提供程序,它也不起作用:

TestBed.configureTestingModule({
    providers: [
      ConsoleLoggerEffects,
      { provide: Actions, useValue: new ReplaySubject(1)}
    ]
  });

有人知道会发生什么吗?

我也遇到了同样的问题,我最终可以通过编辑我的
tsconfig.spec.json
,然后删除
node\u模块并重新安装来修复它

这就是我的TS Spec配置文件现在的样子:

但是,您可以按照


我也有同样的问题,尽管我使用了玩笑和角度8。似乎可以修复它的选项是
“emitDecoratorMetadata”:true,
{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": ["es2017", "dom"],
    "outDir": "../out-tsc/spec",
    "module": "commonjs",
    "target": "es6",
    "types": ["jest", "node"],
    "baseUrl": ".",
    "rootDir": "./"
  },
  "files": [
    "polyfills.ts"
  ],
  "include": [
    "**/*.spec.ts",
    "**/*.d.ts"
  ]
}