12

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?

fortran
  • 74,053
  • 25
  • 135
  • 175

1 Answers1

13

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.

fortran
  • 74,053
  • 25
  • 135
  • 175
Wolfshead
  • 540
  • 6
  • 8
  • 2
    property name 'B': … must be relative to where A is; the 'B' argument of the second proxyquire call must be relative to the file this expression is in – Jan Dockx Dec 13 '17 at 19:32