jasmine-node, не прошедший прохождение теста, с кодом ошибки npm ELIFECYCLE

Короткая история, при выполнении моих тестов с жасминовыми узлами не выполняется утверждение равенства для идентичных массивов, а затем выдается ошибка NPM ELIFECYCLE.

Это происходит на нескольких тестах, но на данный момент у меня только один работает.

Вот модуль; https://github.com/Thomas-Elder/hobby.node.happening/blob/mgmt/server/mgmt.js

Вот спецификация; https://github.com/Thomas-Elder/hobby.node.happening/blob/mgmt/spec/server/mgmt_spec.js

Единственный тест, который выполняется в данный момент, - это первый файл в файле mgmt_spec.js.

Вот npm-debug.log для тестового запуска;

0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files (x86)\\nodejs\\node.exe',
1 verbose cli   'C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli   'run',
1 verbose cli   'test' ]
2 info using npm@2.14.12
3 info using node@v4.2.4
4 verbose run-script [ 'pretest', 'test', 'posttest' ]
5 info pretest happening@0.0.1
6 info test happening@0.0.1
7 verbose unsafe-perm in lifecycle true
8 info happening@0.0.1 Failed to exec test script
9 verbose stack Error: happening@0.0.1 test: `jasmine-node --verbose --captureExceptions --forceexit ./spec`
9 verbose stack Exit status 1
9 verbose stack     at EventEmitter.<anonymous> (C:\Program Files (x86)\nodejs\node_modules\npm\lib\utils\lifecycle.js:214:16)
9 verbose stack     at emitTwo (events.js:87:13)
9 verbose stack     at EventEmitter.emit (events.js:172:7)
9 verbose stack     at ChildProcess.<anonymous> (C:\Program Files (x86)\nodejs\node_modules\npm\lib\utils\spawn.js:24:14)
9 verbose stack     at emitTwo (events.js:87:13)
9 verbose stack     at ChildProcess.emit (events.js:172:7)
9 verbose stack     at maybeClose (internal/child_process.js:818:16)
9 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)
10 verbose pkgid happening@0.0.1
11 verbose cwd E:\js\apps\happening
12 error Windows_NT 10.0.14393
13 error argv "C:\\Program Files (x86)\\nodejs\\node.exe" "C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "test"
14 error node v4.2.4
15 error npm  v2.14.12
16 error code ELIFECYCLE
17 error happening@0.0.1 test: `jasmine-node --verbose --captureExceptions --forceexit ./spec`
17 error Exit status 1
18 error Failed at the happening@0.0.1 test script 'jasmine-node --verbose --captureExceptions --forceexit ./spec'.
18 error This is most likely a problem with the happening package,
18 error not with npm itself.
18 error Tell the author that this fails on your system:
18 error     jasmine-node --verbose --captureExceptions --forceexit ./spec
18 error You can get their info via:
18 error     npm owner ls happening
18 error There is likely additional logging output above.
19 verbose exit [ 1, true ]

Спецификация запускается, а затем сообщает, что утверждение не удалось, но сообщение:

Expected 
[ { id : '123', name : 'Tom' }, 
  { id : '456', name : 'Tim' }, 
  { id : '789', name : 'Tum' } ] 

to equal 
[ { id : '123', name : 'Tom' }, 
  { id : '456', name : 'Tim' }, 
  { id : '789', name : 'Tum' } ].

Что не должно подвести... они равные массивы, верно?

После сообщения об ошибке появляется ошибка NPM, подробности которой повторяются в npm-debug.log.

Любая подсказка, что здесь происходит?

1 ответ

Хорошо, так что я несколько разобрался. У меня была проблема, не связанная с ошибкой NPM, которую я видел. Причиной сбоя спецификации было то, что я сравнивал литералы объектов с объектами, созданными с помощью конструктора.

Это стало очевидным, когда я наконец обновил свой бегун спецификаций до Jasmine (от jasmine-node). Логирование Жасмин было;

Expected 
[ ({ id: '123', name: 'Tom' }), ({ id: '456', name: 'Tim' }), ({ id:'789', name: 'Tum' }) ] 
to equal 
[ Object({ id: '123', name: 'Tom' }), Object({ id: '456', name: 'Tim' }), Object({ id: '789', name: 'Tum' }) ]

Это заставило меня посмотреть, как я настраивал спецификацию, и после внесения изменений в спецификацию (см. Ссылку на репо выше) она прошла.

Кажется, что ошибка ELIFECYCLE происходит каждый раз, когда спецификация не выполняется.

Другие вопросы по тегам