2017-03-06 10 views
2

jestでモンゴーズモデルを模擬しようとしていますが、Cannot create property 'constructor' on number '1'というエラーが発生しています。以下の2つのファイルでプロジェクトを作成して問題を再現できました。モンゴーズモデルを模倣する方法はjestですか?モンクースモデルと冗談

./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 =() => { 
// ... 
// } 

エラー:

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) 

更新:

をしているように見えます冗談のバグ。私はこの問題を解決するために、このパッケージをオーサリングよう https://github.com/facebook/jest/issues/3073

+0

jestについてはわかりませんが、[mockgoose](https://github.com/mockgoose/mockgoose)はすべてを模擬しようとするよりも簡単な選択肢でした。 – Matt

答えて

1

[OK]を、私は同じ問題を抱えていた:

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); 

https://www.npmjs.com/package/mockingoose

これはあなたがのは言わせてそれを使用することができる方法ですこれはあなたのモデルであり、これはあなたのテストです:

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

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

さらに多くの例のためのテストフォルダをチェックアウト: https://github.com/alonronin/mockingoose/blob/master/tests/index.test.js

データベースに接続されていません!

+0

優れた仕事は、まさにあなたが言うように!ありがとうございました! –

+0

ネストされたドキュメントはどうですか? –

関連する問題