2016-01-05 3 views
0

Можно ли издеваться над методами мангуста, которые используются в файлах, которые не являются спецификациями? Я хотел бы иметь возможность фиктивные операции в пути похожа на этот пример:Mocking mongoose using Sinon

модель/user.js:

userSchema.statics.SetUsername = function (userId, username, callback) { 
     instance.findOneAndUpdate({ UserId: userId }, 
      { $set: { Name: username } }, 
      { new: true }, 
      function (error, doc) { 
       if (error) { 
        logger.error(error); 
        callback({ error: error }); 
       } else { 
        callback(doc); 
       } 
      }) 
     } 

SPEC/userSpec.js:

describe("User module", function() { 
var User = require('../models/User'); 
var UserMock = sinon.mock(User); 
UserMock 
.expects('findOneAndUpdate').withArgs({UserId: 9 },{ $set: { Name: 'Lol'}},{ new: true }) 
.yields(null, {UserId: 9, Username: 'Lol'}); 

describe("POST /setUsername", function() { 
    it("returns status code 200", function (done) { 
     request.post({ 
      url: setUsernameUrl, 
      qs: { userId: '9', username: 'Lol' } 
     }, function (error, response, body) { 
      expect(response.statusCode).toBe(200); 
      done(); 
     }); 
    }); 
}); 

Это не работа, findOneAndUpdate внутри функция SetUsername не получает издеваться.

Если это вообще плохая идея, вы могли бы предложить другой подход?

@EDIT: Думаю, я понимаю, почему это не имеет смысла. Теперь я ищу способ тестирования методов единственного mongoose, вызывая их из теста, а не путем отправки запроса на тестовый сервер. Тест будет выглядеть следующим образом:

it("returns document", function (done) { 
      User.SetUsername(9, 'Lol', function (result) { 
       expect(result).not.toBeNull(); 
       expect(result.UserId).toBe(9); 
       expect(result.Username).toBe('Lol'); 
       done(); 
      }) 
}); 

ответ

0

Умм, так что я просто забыть издеваться другой метод, который использует соединение с базой данных (что приводит к ошибке:.. Timeout Этот ответ относится к отредактированной версии вопроса

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