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

2.4k Views Asked by At

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?

1

There are 1 best solutions below

1
Wolfshead On BEST ANSWER

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.