ng test由于大型模拟数据导致JavaScript堆内存不正确

时间:2017-11-14 14:55:33

标签: angular testing karma-jasmine

我正在我的测试用例中进行角度测试4我需要大量数据。 我动态地需要我的spec文件中需要的json。 这些文件大约是4到5 MB。

这是一些参考......

  it('Multiple JSON:', () => {
    rdocList.forEach(element => {
      if (element.rdoc_id) {
        service.rdoc = require('../mock/' +
          element.rdoc_id +
          '.json');
        service.rdoc = new RDoc(service.rdoc);
        const storage = service.rdoc.descendants.filter({
          class_id: STORAGE_CLASS_IDS.ID
        });
        const clusterNode = storage[0].descendants.filter({
          class_id: STORAGE_CLASS_IDS.CLUSTERID
        });
        component.id = clusterNode[0].id;
        fixture.detectChanges();
      }
    });
  });

我已经在每次之后清除了json ..

  afterEach(() => {
    service.rdoc = null;
    service = null;
  });

我遇到了这个问题

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

3 个答案:

答案 0 :(得分:1)

您也可以先通过运行 export NODE_OPTIONS=--max_old_space_size=8192ng test 命令来全局增加节点的内存使用量。

答案 1 :(得分:0)

移至此路径中的npm位置 - C:\ Users * UserName * \ AppData \ Roaming \ npm

尝试将 ng.cmd 更改为:

@IF EXIST "%~dp0\node.exe" (
   "%~dp0\node.exe" --max_old_space_size=8192 "%~dp0\..\@angular\cli\bin\ng" %*
) ELSE (
   @SETLOCAL
   @SET PATHEXT=%PATHEXT:;.JS;=;%
   node --max_old_space_size=8192 "%~dp0\..\@angular\cli\bin\ng" %*
)

ngc.cmd 更改为:

@IF EXIST "%~dp0\node.exe" (
       "%~dp0\node.exe" --max_old_space_size=8192 "%~dp0\..\@angular\compiler-cli\src\main.js" %*
 ) ELSE (
       @SETLOCAL
       @SET PATHEXT=%PATHEXT:;.JS;=;%
       node --max_old_space_size=8192 "%~dp0\..\@angular\compiler-cli\src\main.js" %*
 )

答案 2 :(得分:0)

对我来说,它可以代替简单的ng test
node --max_old_space_size=8192 node_modules/@angular/cli/bin/ng test
8192是您要分配的分散内存