How does proxyquire handle second level (indirect) requires of proxies modules?

javascript, mocking, proxyquire

Solution

Only direct dependencies will be mocked.

But you can nest proxyquire statements, so in your example you could:

const A = proxyquire('../A', {
    './B': proxyquire('../B', {
        'C': mockC
    })
});

Where the file structure is like

root
 |-- A.js
 |-- B.js
 `-- tests
       `-- A.spec.js

And import `C` is not local.

Problem

If we have three modules names `A`, `B` and `C` so module `A` requires `B` and `B` requires `C`: what would be the effect of this call? ``` var A = proxyquire('A', {'C': mockedModule}) ``` Would module `B` get the mock or the real `C` module?

Original source