UNPKG

3.08 kBMarkdownView Raw
1[![Build Status](https://travis-ci.org/Mockgoose/Mockgoose.png?branch=master)](https://travis-ci.org/Mockgoose/Mockgoose)
2
3Please Share on Twitter if you like #mockgoose
4<a href="https://twitter.com/intent/tweet?hashtags=mockgoose&amp;&amp;text=Check%20out%20this%20%23Mongoose%20%23MongoDB%20Mocking%20Framework&amp;tw_p=tweetbutton&amp;url=http%3A%2F%2Fbit.ly%2F19gcHwm&amp;via=omnipitence" style="float:right">
5<img src="https://raw.github.com/Mockgoose/Mockgoose/master/twittershare.png">
6</a>
7
8## What is Mockgoose?
9
10Mockgoose provides test database by spinning up mongod on the back when mongoose.connect call is made. By default it is using in memory store which does not have persistence.
11
12## Install
13To install the latest official version, use NPM:
14
15```bash
16npm install mockgoose --save-dev
17```
18
19## Usage
20You simply require Mongoose and Mockgoose and wrap Mongoose with Mockgoose.
21
22```javascript
23var mongoose = require('mongoose');
24var Mockgoose = require('mockgoose').Mockgoose;
25var mockgoose = new Mockgoose(mongoose);
26
27mockgoose.prepareStorage().then(function() {
28 // mongoose connection
29});
30```
31
32Once Mongoose has been wrapped by Mockgoose connect() will be intercepted by Mockgoose so that no MongoDB instance is created.
33
34## Mocha
35
36Default mocha timeout is 2000ms, change it to two minutes.
37
38```bash
39mocha --timeout 120000
40```
41
42Same can be done by creating 'mocha.opts' file in your test directory with "--timeout 120000" entry.
43
44### Example
45
46```javascript
47var Mongoose = require('mongoose').Mongoose;
48var mongoose = new Mongoose();
49
50var Mockgoose = require('mockgoose').Mockgoose;
51var mockgoose = new Mockgoose(mongoose);
52
53before(function(done) {
54 mockgoose.prepareStorage().then(function() {
55 mongoose.connect('mongodb://example.com/TestingDB', function(err) {
56 done(err);
57 });
58 });
59});
60
61describe('...', function() {
62 it("...", function(done) {
63 // ...
64 done();
65 });
66});
67```
68
69## ES6 Example without mocha
70
71```javascript
72import * as mongoose from 'mongoose';
73import {Mockgoose} from 'mockgoose';
74
75let mockgoose: Mockgoose = new Mockgoose(mongoose);
76
77mockgoose.prepareStorage().then(() => {
78 mongoose.connect('mongodb://foobar/baz');
79 mongoose.connection.on('connected', () => {
80 console.log('db connection is now open');
81 });
82});
83```
84
85## Helper methods and variables (mockgoose.helper)
86
87### reset(callback)
88Reset method will remove **ALL** of the collections from a temporary store,
89note that this method is part of **mockgoose** object, and not defined under
90**mongoose**
91
92```javascript
93mockgoose.helper.reset().then(() => {
94 done()
95});
96```
97
98### isMocked
99Returns **TRUE** from **mongoose** object if Mockgoose is applied
100
101```javascript
102if ( mockgoose.helper.isMocked() === true ) {
103 // mongoose object is mocked
104}
105```
106
107## Development
108
109This section contains instructions for developers working on the Mockgoose codebase.
110It is not relevant if you just want to use Mockgoose as a library in your project.
111
112### Pre-requisites
113
114* Node.js >= 4
115
116### Setup
117
118```bash
119git clone git@github.com:Mockgoose/Mockgoose.git
120cd Mockgoose
121npm install
122npm test
123```
\No newline at end of file