Angular2 +业力测试+ redux - 过程未定义

时间:2016-10-23 11:31:19

标签: unit-testing angular redux karma-runner ionic2

我正在尝试使用基于angular2-redux的Ionic2 rc1(使用角度2.0.0)应用来实现业力单元测试的可能性。 业力设置基本上采用以下回购: https://github.com/lathonez/clicker并且工作正常。我有一个简单的counter redux实现工作正常。当我尝试为我的测试设置angular2-redux时,我收到以下错误:

未捕获的ReferenceError:未定义进程   在webpack:///Users/luki/Applications/ionic/ionic2-redux-example/~/redux/es/index.js:14:0< - src / test.ts:65041

我知道流程未在浏览器中定义,但仅适用于服务器上的节点。我怎么需要调整我的业力配置才能使用angular2-redux?

调用createAppStoreFactory函数在TestBed.configureTestingModule中提供我的AppStore会导致此错误。

我的测试设置可以在以下回购中找到: https://github.com/lujakob/ionic2-redux-example/blob/master/src/test.ts

任何帮助表示赞赏!

(npm angular2-redux有一个演示应用程序和一个示例测试设置。但这取决于

1 个答案:

答案 0 :(得分:2)

即使这是一个已经存在了三年的问题,对于其他面临此问题的人,这也是我的解决方案:

由于process仅在NodeJS中定义,而没有在浏览器中定义,因此我们必须告诉karma应该“伪造”它。

创建一个javascript文件,并根据需要为其命名(例如global-variables.js),并包含以下内容:

const process = {
  env: {
    NODE_ENV :'production'
  }
};

在您的karma.conf.js中,将此文件作为 FIRST导入导入到files[]数组中:

(...)
files: [
    './test/global-variables.js',
    { pattern: config.grep ? config.grep : 'test/**/*.test.ts', type: 'module' }
],
(...)

那应该至少解决ReferenceError: process is not defined

相关问题