npm测试手表"卸载"角度第二次?

时间:2016-11-28 22:33:25

标签: javascript angularjs node.js npm mocha

我有一个在节点中运行的应用程序,我在Mocha中使用Chai for asserts运行我的测试。我也使用Angular,对于测试,我需要将Angular加载到window对象和其他一些我正在使用 testHelper.js 并使用 jsdom < /强>:

/* global window */
const jsdom = require('jsdom').jsdom;

global.document = jsdom().defaultView;
global.window = global.document;

global.navigator = window.navigator = {};
global.Node = window.Node;

global.window.mocha = {};
global.window.beforeEach = beforeEach;
global.window.afterEach = afterEach;

require('angular/angular');
require('angular-mocks');

global.angular = window.angular;
global.inject = global.angular.mock.inject;
global.ngModule = global.angular.mock.module;

require('../client/src/app');

我的 package.json 中有一个测试脚本:

"test": "mocha --reporter progress tools/testSetup.js \"test/*.js\""

当我运行npm run test时,工作正常。测试运行并按预期通过/失败。

然后我为开始(所以npm run start)设置了一个脚本,该脚本运行我的应用程序,运行测试和lints,然后监视文件更改。这在第一遍中运行良好:

"start": "npm-run-all --parallel test:watch open:src lint:watch"

(我的package.json的完整脚本部分在下面,所以你可以看到这些命令)

当我保存文件以触发监视时,我在控制台中收到错误:

TypeError: Cannot read property 'mock' of undefined
    at Object.<anonymous> (D:\Git\local-poker-club\tools\testSetup.js:18:31)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at D:\Git\local-poker-club\node_modules\mocha\lib\mocha.js:222:27
    at Array.forEach (native)
    at Mocha.loadFiles (D:\Git\local-poker-club\node_modules\mocha\lib\mocha.js:219:14)
    at Mocha.run (D:\Git\local-poker-club\node_modules\mocha\lib\mocha.js:487:10)
    at loadAndRun (D:\Git\local-poker-club\node_modules\mocha\bin\_mocha:416:22)
    at rerun (D:\Git\local-poker-club\node_modules\mocha\bin\_mocha:444:5)
    at D:\Git\local-poker-club\node_modules\mocha\bin\_mocha:452:7
    at StatWatcher.<anonymous> (D:\Git\local-poker-club\node_modules\mocha\lib\utils.js:196:9)
    at emitTwo (events.js:106:13)
    at StatWatcher.emit (events.js:191:7)
    at StatWatcher._handle.onchange (fs.js:1487:10)

好像Angular正好加载到窗口对象上,然后以某种方式被消灭。当我调试它时,在第一次传递时,就在require('angular/angular');window.angular正确undefined之前,但在该行被删除之后,它被正确定义。这不会在第二次发生,它总是undefined

以下是package.json的完整脚本部分:

"scripts": {
    "test": "mocha --reporter progress tools/testSetup.js \"test/*.js\"",
    "lint": "node_modules/.bin/esw webpack.config.* client server",
    "start": "npm-run-all --parallel test:watch open:src lint:watch",
    "open:src": "babel-node server/app.js",
    "lint:watch": "npm run lint -- --watch",
    "test:watch": "npm run test -- --watch"
  }

我做错了什么?

0 个答案:

没有答案