2017-03-06 23 views
2

Ich versuche, ein Mungo-Modell mit jest zu verspotten, aber bekommt Cannot create property 'constructor' on number '1' Fehler. Ich konnte das Problem reproduzieren, indem ich das Projekt mit 2 Dateien erstellte. Gibt es eine Möglichkeit, ein Mungo-Modell mit jest zu verspotten?Spott Mungo Modell mit Scherz

./model.js

const mongoose = require('mongoose') 
const Schema = mongoose.Schema 

const schema = new Schema({ 
    name: String 
}) 

module.exports = mongoose.model('Test', schema) 

./model.test.js

jest.mock('./model') 
const Test = require('./model') 

// Test.findOne.mockImplementation =() => { 
// ... 
// } 

Fehler:

FAIL ./model.test.js 
    ● Test suite failed to run 

    TypeError: Cannot create property 'constructor' on number '1' 

     at ModuleMockerClass._generateMock (../../jitta/sandbox/rest_api/node_modules/jest-mock/build/index.js:458:34) 
     at Array.forEach (native) 
     at Array.forEach (native) 
     at Array.forEach (native) 

Update:

scheint zu sein, ein Fehler im Scherz. https://github.com/facebook/jest/issues/3073

+0

Nicht sicher über Scherz aber [Mockgoose] (https://github.com/mockgoose/mockgoose) war eine leichtere Option für mich als zu versuchen, alles zu verspotten. – Matt

Antwort

1

ok, ich hatte das gleiche Problem, so dass ich dieses Paket Autor dieses Problem zu lösen: https://www.npmjs.com/package/mockingoose

dies ist, wie Sie es sagen wir verwenden können, ist dies Ihr Modell:

import mongoose from 'mongoose'; 
const { Schema } = mongoose; 

const schema = Schema({ 
    name: String, 
    email: String, 
    created: { type: Date, default: Date.now } 
}) 

export default mongoose.model('User', schema); 

und das ist Ihr Test:

it('should find',() => { 
    mockingoose.User.toReturn({ name: 2 }); 

    return User 
    .find() 
    .where('name') 
    .in([1]) 
    .then(result => { 
    expect(result).toEqual({ name: 2 }); 
    }) 
}); 

Kasse die Tests für weitere Beispiele Ordner: https://github.com/alonronin/mockingoose/blob/master/tests/index.test.js

Es werden keine Verbindungen zur Datenbank hergestellt!

+0

Ausgezeichneter Job, tut genau wie du sagst! Danke! –

+0

Was ist mit verschachtelten Dokumenten? –