Welcome to mirror list, hosted at ThFree Co, Russian Federation.

README.md - github.com/twbs/rewire.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 8462cc8f4bb18575e1f4ceea8a1b815fea950785 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
rewire
=====
**Dependency injection for node.js applications**.

rewire allows you to modify the behaviour of modules for better unit testing. You may

- provide mocks for other modules
- leak private variables
- override variables within the module
- inject scripts

rewire does **not** load the file and eval it to emulate node's require mechanism. In fact it uses node's require to load the module. Thus your module behaves exactly the same in your test environment as under regular circumstances (except your modifications).

Installation
------------

```npm install rewire```

Examples
--------

```javascript
var rewire = require("rewire"),
    rewiredModule;

// Default
////////////////////////////////
// rewire acts exactly like require when omitting all other params
rewiredModule = rewire("./myModuleA.js");

// Mocks
////////////////////////////////
var mockedModuleB = {},
    mocks = {
        "path/to/moduleB.js": mockedModuleB
    };

// the rewired module will now use your mock instead of moduleB.js.
rewiredModule = rewire("./myModuleA.js", mocks);


// Injections
////////////////////////////////
var injections = {
        console: {
            log: function () { /* be quiet */ }
        },
        process: { argv: ["someArgs"] },
        __filename: "some/other/dir"
    };

// overrides all given variables within the module
rewiredModule = rewire("./myModuleA.js", null, injections);
// you can also pass a script to inject
rewiredModule = rewire("./myModuleA.js", null, "console.log('hellooo');");


// Leaks
////////////////////////////////

```