首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jasmine-node进行测试

使用jasmine-node进行测试
EN

Stack Overflow用户
提问于 2013-04-02 20:04:54
回答 1查看 395关注 0票数 0

下面是我尝试测试的场景:

登录用户修改'module‘属性'desc’。我没有使用任何数据库来存储'module',它是在我需要的文件中定义的。

下面是不起作用的测试代码:

首先,我有一个助手登录函数: //app.spec.js

代码语言:javascript
复制
var login = function(done) {
    var options = {
          uri: 'http://localhost:3000/login'
        , method: 'POST'
        , form: {
              username: 'user'
            , password: 'ffff'
        }
    }
    request(options, function() {
        done();
    });
};

测试:

代码语言:javascript
复制
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

代码语言:javascript
复制
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('/');
});

问题是,当我在app.post中执行console.log(模块)时,它显示desc现在是“测试”,但我的测试失败了,因为它仍然显示默认值。

我对express/node还不熟悉,不确定如何正确地编写这些类型的测试。任何提示都将不胜感激。

P.S.模块:

//Model/module.js

代码语言:javascript
复制
    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;
EN

回答 1

Stack Overflow用户

发布于 2013-04-26 13:09:19

我认为不应该将jasmine节点提供的done回调传递给login,而应该传递给调用测试其余部分的函数

代码语言:javascript
复制
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);
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15763668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档