Ложная внешняя зависимость - PullRequest
1 голос
/ 19 января 2012
//user.js

couchdb = require('couchdb');

exports.create = function(req, res){

  user = req.body

  if( validate(user) ) {

    couchdb('db').insert(user);
    //redirect

  } else {

    //render new again with the user

  };

};

Я хочу проверить, создала ли вышеуказанная функция пользователя.

//user_spec.js

describe('User create', function(){

  beforeEach( function(){
    //call create with valid user
  });

  it('should create a user', function(){

    //test database for user
    assert( fakeDatabase.users.length, 1)

  });

})

Кто-нибудь знает способ заменить объект couchdb на поддельный, чтобы я мог проверить, был ли создан пользователь? Я действительно не хочу звонить по-настоящему couchdb в моих юнит-тестах.

Ответы [ 2 ]

1 голос
/ 20 января 2012

Попробуйте nock . Вы можете высмеивать запросы http (s), но вам придется следить за пользователями, которых вы добавляете сами.

var scope = nock('http://myapp.iriscouch.com')
                .get('/')
                .reply(200, {username: 'pgte', email: 'pedro.teixeira@gmail.com', _id: "4324243fsd"});
1 голос
/ 19 января 2012

Нашел пару решений.Первый - явно добавить зависимости в модуль.

module.exports = function(dependency){
   var dependency = dependency | require('dependency');
};

Нашел это решение здесь: http://csausdev.wordpress.com/2010/12/17/dependency-injection-in-node-js/

Второй, который я нашел, - это загрузить файл с помощью пользовательского загрузчика файлов изаменить модули таким образом.Это объясняется здесь: http://howtonode.org/testing-private-state-and-mocking-deps

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...