How can I joke to ignore the fairly common package `debug` node?

I have a node js module that looks like

"use strict"; var debug = require('debug')('foo'); var Foo = function() { this.x = 123; debug("init"); }; module.exports = Foo; 

And my test is as follows

 jest.dontMock('../lib/foo'); jest.dontMock('debug'); describe('footest', function() { it('checks the foo', function() { var Foo = require('../lib/foo'); var foo = new Foo(); expect(foo.x).toBe(123); }); }); 

But when I run jokes with

 node node_modules/jest-cli/bin/jest.js 

I get

 Found 1 matching tests... FAIL __tests__/foo-test.js (0.02s) ? footest › it checks the foo - TypeError: /Users/gregg/src/jest-test/lib/foo.js: /Users/gregg/src/jest-test/node_modules/debug/node.js: Cannot read property 'buffer' of undefined at Socket.self [as bytesWritten] (net.js:688:8) at _getMetadata (/Users/gregg/src/jest-test/node_modules/jest-cli/src/lib/moduleMocker.js:279:49) at _getMetadata (/Users/gregg/src/jest-test/node_modules/jest-cli/src/lib/moduleMocker.js:286:23) at _getMetadata (/Users/gregg/src/jest-test/node_modules/jest-cli/src/lib/moduleMocker.js:279:27) at _getMetadata (/Users/gregg/src/jest-test/node_modules/jest-cli/src/lib/moduleMocker.js:279:27) at Object.module.exports.getMetadata (/Users/gregg/src/jest-test/node_modules/jest-cli/src/lib/moduleMocker.js:388:20) at Loader._generateMock (/Users/gregg/src/jest-test/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:280:56) at Loader.requireMock (/Users/gregg/src/jest-test/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:782:43) at Loader.requireModuleOrMock (/Users/gregg/src/jest-test/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:897:17) at /Users/gregg/src/jest-test/node_modules/debug/node.js:6:11 at Object.runContentWithLocalBindings (/Users/gregg/src/jest-test/node_modules/jest-cli/src/lib/utils.js:309:17) at Loader._execModule (/Users/gregg/src/jest-test/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:243:9) at Loader.requireModule (/Users/gregg/src/jest-test/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:879:10) at Loader.requireModuleOrMock (/Users/gregg/src/jest-test/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:899:17) at /Users/gregg/src/jest-test/lib/foo.js:3:13 at Object.runContentWithLocalBindings (/Users/gregg/src/jest-test/node_modules/jest-cli/src/lib/utils.js:309:17) at Loader._execModule (/Users/gregg/src/jest-test/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:243:9) at Loader.requireModule (/Users/gregg/src/jest-test/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:879:10) at Loader.requireModuleOrMock (/Users/gregg/src/jest-test/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:899:17) at Spec.<anonymous> (/Users/gregg/src/jest-test/__tests__/foo-test.js:7:14) at Timer.listOnTimeout [as ontimeout] (timers.js:110:15) 

How do I make jokes ignore the debugging package and why does it seem to be doing the layout when I said this not?

+6
source share
3 answers

There is currently a bug in joke 0.1.18 (fixed here , documented here ) where node kernels cannot be ignored due to ridicule.

Once the download request is accepted on facebook, this problem should go away.

Until then, you can point your package.json package to the fix repo:

 "jest-cli": "git://github.com/adaschevici/jest.git#cf4c6ff97d7009ff8627dd7d3a59cfeff1f3c8b8" 

which should solve this problem.

+3
source

The reason for this is because jest.dontMock('debug'); will only interfere with the root file of the debugging module, while all other internal elements will still be mocked.

One possible solution would be to prevent a mock debugging library using the unmockedModulePathPatterns configuration unmockedModulePathPatterns :

In package.json:
 { "name": "...", "version": "0.0.0", ... "jest": { "unmockedModulePathPatterns": ["/node_modules/debug"] }, } 
+1
source

At the top of the test file, try this :

  jest.autoMockOff(); 

Then manually mock the files with jest.mock(..)


Update: there is a fix that does not require disabling automatic bullying. TL; DR; add debug , tty and net to jest.unmockedModulePathPatterns in package.json

0
source

Source: https://habr.com/ru/post/970827/


All Articles