testdouble.js icon indicating copy to clipboard operation
testdouble.js copied to clipboard

td.replace CJS module-replacement gives bad message if item is not requireable

Open searls opened this issue 8 years ago • 0 comments

I had a depended-on module X that was in a not-requireable state because of a typo in one of its import statements. The symptom given to me by TD when I tried to td.replace() said module from its user's test was "module X not found".

This was not a useful message, because it sent me on a hunt to find a ../../ path screw-up, when the real root cause was that quibble failed to require it, so it just blew up. It's necessary for dependencies' to require cleanly so we can imitate their functions/constructors/etc, but the message should indicate that's what failed, not that the file was missing.

  stacktrace: Error: Cannot find module '../../src/wrap/log' from '/Users/justin/code/testdouble/testdouble.js' 
    at Function.module.exports [as sync] (/Users/justin/code/testdouble/testdouble.js/node_modules/resolve/lib/sync.js:37:15)
    at requireAt (/Users/justin/code/testdouble/testdouble.js/node_modules/testdouble/lib/replace/module.js:39:38) 
    at exports.default (/Users/justin/code/testdouble/testdouble.js/node_modules/testdouble/lib/replace/module.js:11:19) 
    at exports.default [as replace] (/Users/justin/code/testdouble/testdouble.js/node_modules/testdouble/lib/replace/index.js:9:29) 
    at undefined.beforeEach (/Users/justin/code/testdouble/testdouble.js/unit/when/ensure-rehearsal.test.js:4:14) 
    at /Users/justin/code/testdouble/testdouble.js/node_modules/teenytest/lib/plugins/callbackify.js:15:17 
    at runX (/Users/justin/code/testdouble/testdouble.js/node_modules/teenytest/lib/plugins/wrap.js:22:7) 
    at Object.userFunction [as wrap] (/Users/justin/code/testdouble/testdouble.js/node_modules/teenytest/plugins/uncaught-exception.js:16:9) 
    at callable (/Users/justin/code/testdouble/testdouble.js/node_modules/teenytest/lib/plugins/wrap.js:29:24) 
    at runX (/Users/justin/code/testdouble/testdouble.js/node_modules/teenytest/lib/plugins/wrap.js:22:7) ```

searls avatar Jun 14 '17 11:06 searls