2017-01-25 7 views
0

Я запускаю ранние тесты API, и ошибка должна быть очевидной, но я получаю мужественный взгляд, глядя на тот же код в течение 45 минут.Mocha Test of Mongoose Model дает ошибку с 'then'

Здесь ошибка

Creating User document find or create a twitter user: 
TypeError: Cannot read property 'then' of undefined 

Вот тест. Ошибка с линией .then (пользователь => {...}

const assert = require('assert'); 
const User = require('../models/userModel'); 
const userController = require('../controllers/usersController'); 

describe('Creating User document',() => { 
    it('find or create a twitter user', (done) => { 
      userController.findOrCreateHelper({ 
       username : 'testuser', 
       displayName : 'testUserDisplay', 
       id : 111000100, 
       provider : 'Twitter' 
       }) 
       .then(user => { 
        console.log('*** Error in this .then bracket ***', user) 
        assert(user === 'testuser') 
        assert(user.id === 111000100) 
        done() 
       }).catch(error => console.error(error)) 
    }) 

Вот контроллер

const mongoose = require('mongoose'); 
const User = require('../models/userModel'); 

exports.findUser = ({id}) => { 
    return User.findOne({id}) 
} 

exports.createUser = ({username, displayName, id, provider}) => { 
    return User.create({username, displayName, id, provider }) 
} 

exports.findOrCreateHelper = (provider) => { 
    exports.findUser({id}) 
     .then(user => { 
      if (!user) { 
       exports.createUser(provider) 
      } 
     }) 
} 
+0

Обнаружена проблема ... подробнее ниже – bresson

ответ

0

exports.findOrCreateHelper должен «вернуть exports.findUser ({. ..}} ... ", как показано ниже:

exports.findOrCreateHelper = (provider) => { 
    return exports.findUser({id}) 
     .then(user => { 
      if (!user) { 
       exports.createUser(provider) 
      } 
     }) 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^