Open Saif-Shines opened 3 years ago
This is the second time such issue appear (see #46) and it's expected to work. But it will be not try to "resolve" a file name at all. (consider it as a bug) So in order to mock a "virtual file" you'll need to mocks it in a way you will load it.
We know what node wants - Error: Cannot find module '/path/to/current/working/dir/lib/utils/data-util'
Let's try to double check what rewiremock does
rewiremock(`${global.PATH}/lib/utils/data-util`).with({
DataStore: { }
})
.toBeUsed(); // 👈
rewiremock.enable();
rewiremock.disable(); // 👈
⬇️
XXX was set to be used, but was unused
It appears like rewiremock doesn't print anything close to,
XXX was set to be used, but was unused
It might have been used indeed by rewiremock.
I still see the same error,
Error: Cannot find module '/path/to/current/working/dir/lib/utils/data-util'
Following is how my run.test.js appears like
const rewiremock = require('rewiremock').default;
describe('Micky Mouse', function(){
global.PATH = process.cwd();
it('disney world', function(){
// Around ~15 rewiremock'd modules
rewiremock(`${global.PATH}/lib/utils/data-util`)
.with({
DataStore: {}
})
.toBeUsed();
rewiremock.enable();
const run = require('../../lib/cli/run');
rewiremock.disable();
})
after(function () {
rewiremock.disable();
});
})
Mentioned some code surrounding it, just incase bug lives outside our current focus.
I simply ran by
mocha run.test.js
There is no const run = require('../../lib/cli/run');
in my case. It was just enable
and just disable
.
@theKashey i can confirm that mocking of non-existent modules is not working (Node.js)
rewiremock('puppeteer').by('../versions/puppeteer-15/node_modules/puppeteer-15');
Error: Cannot find module 'puppeteer'
Require stack:
- /Users/alex/Development/projects/test-project/build/rewiremock.js
Putting placeholder empty package to node_modules
resolves problem, but still unexpected behaviour
This would appear like a weird use case, but I am currently struggling to pass through since a few days now.
run.js looks like this
run.test.js
So far working with rewiremock, I broadly understood, it resolves and then mocks all the dependencies (node, npm). Only by the time
rewiremock.enable()
is invoked, all the mocks are replaced for specified test case untilrewiremock.disable()
Appears like there's a flaw in my understanding and approach. So I see the following error
Catch is that the module at
${global.PATH}/lib/utils/data-util
doesn't even exist in the first place in order torequire
and mock. In reality this module exists on 3rd party developer's system which is actually required then.In the above case, it appears like I don't give anything to be resolved in the first place.