2016-06-04 3 views
5

код для тестированияблок Функция тестирования, которая возвращает Мангуст обещают

import { User } from '../models/no-sql/user'; 

function userCreate(req) { 
    const user = new User({ 
     username: req.username, 
     password: req.password 
    }); 

    return user.save(); 
} 

app.get('/userCreate', function(req, res) { 
    User.findOne({ username: req.username }).lean().exec((err, data) => { 
     if(data){ 
      userCreate(req).then(function() { 
       // success 
      }, function(err) { 
       // error 
      }); 
     }else{ 
     // no user found 
     } 
    }); 
}); 

тестовое устройство

require('sinon-as-promised'); 
    import request from 'supertest'; 

    const user = { 
     username: newUserName, 
     password: 'password' 
    }; 


    factory.build('user', user, function(err, userDocument) { 
     UserMock. 
      expects('findOne').withArgs(sinon.match.any) 
      .chain('lean') 
      .chain('exec') 
      .yields(null, undefined); 

     const docMock = sinon.mock(userDocument); 
     docMock.expects('save') 
     .resolves([]); 

     request(app) 
     .post('/userCreate') 
     .send({username: newUserName, password: 'password') 
     .expect(200) 
     .end((err, res) => { 
      if(err) done(err); 
      should.not.exist(err); 
      should.equal(res.body.success, true); 
      done(); 
     }); 
}); 

тест GetS, насколько возвратного user.save(), то тайм-аут. Кажется, что я пропускаю что-то в модульных тестах, но ошибка не возникает. Я использую синон, как обещал разрешить обещание, но он, похоже, не видит этого.

ответ

2

Вряд ли вы намеренно отказались от вызова res.send() в вашем примере кода ради краткости.

Просто убедитесь, что вы возвращаете код состояния 200, когда функция userCreate, вызванная в маршрутизаторе, преуспевает?

userCreate(req).then(function() { 
    // success 
    res.status(200).send('User created successfully'); 
} 
+0

когда userCreate ударил с отдыхом клиентом она работает нормально я исключил ответ для ясности, но тест не достигающее возвращения после функции userCreate.then ' – mattwilsn

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