Тестирование с жасминовым узлом

Вот сценарий, который я пытаюсь проверить:

Зарегистрированный пользователь изменяет атрибут 'module' desc '. Я не использую какую-либо базу данных для хранения "модуля", она определена в файле, который мне требуется.

Вот тестовый код, который не работает:

сначала у меня есть вспомогательная функция входа в систему: //app.spec.js

var login = function(done) {
    var options = {
          uri: 'http://localhost:3000/login'
        , method: 'POST'
        , form: {
              username: 'user'
            , password: 'ffff'
        }
    }
    request(options, function() {
        done();
    });
};

и тест:

it('should be able to change desription of a module', function(done){
    login(done);
    var options = {
          uri: 'http://localhost:3000/module/1'
        , method: 'POST'
        , form: {
            desc: 'test'
        }
    }

    request(options, function(err, res, body){              
        var modules = require('../Model/module').modules;
        console.log(modules);
            expect(modules[0].desc).toBe('test');
            done();
    });
});

В заключение,

//app.js

app.post('/module/:module_id', ensureAuthenticated, function(req, res) {    
    var desc = req.body['desc'];
    if(req.module_id){
        findModuleById(req.module_id, function(err, module) {
            module.desc = desc;
            console.log('changed module');
            console.log(module);
        });
    }

    res.redirect('/');
});

Проблема в том, что когда я делаю console.log (модули) из app.post, он показывает, что desc теперь 'test', но мой тест не пройден, потому что там все равно отображается значение по умолчанию.

Я новичок в выражении / узел и не уверен, как правильно писать такие тесты. Любая подсказка будет оценена.

PS модули:

//Model/module.js

    var modules = [
      {id: 1, desc: 'Default description for module 1'}
    , {id: 2, desc: 'Default description for module 2'}
    , {id: 3, desc: 'Default description for module 3'}
    ];

module.exports.modules = modules;

1 ответ

Я не думаю, что вы должны переходить к login поставляемый жасминовый узел done обратный вызов, а скорее функция, где остальная часть вашего теста называется

it('should be able to change desription of a module', function(done){

    var onDoneLoggingOn = function(){
        var options = ...
        request(options, function(err, res, body){              
           ...
           done();
        });
    };
    login(onDoneLoggingOn);
});
Другие вопросы по тегам