首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将MongoDb结果存储在变量中以运行Mocha测试,得到未定义的

将MongoDb结果存储在变量中以运行Mocha测试,得到未定义的
EN

Stack Overflow用户
提问于 2016-11-04 15:19:14
回答 1查看 402关注 0票数 0

所以,我试着做一次摩卡测试,更准确地说,是查克拉姆测试。问题是,我从MongoDB中的一个集合中获取数据,我希望将这些数据存储在一个全局变量中,以运行一些测试。问题是,在回调内部,我得到了数据,但它没有设置运行测试的全局变量。

这是代码

代码语言:javascript
复制
var chakram = require('chakram'),
    expect = chakram.expect;

describe("Test", function() {
    var gl_email;
    var gl_token;

    before("Getting user data", function() {

        var setAccessData = function() {
            var MongoClient = require('mongodb').MongoClient;

            MongoClient.connect('mongodb://localhost/virtusapp', function(err, db) {
                if (err) throw err;
                console.log("Connected to Database");
                var user = db.collection('users').findOne({
                    name: "virtus-app"
                });
                user.then(function(result) {
                    email = result.email;
                    token = result.token1 + result.token2;
                    db.close(test(email, token))
                });
            });
        }

        var test = function(email, token) {
            gl_email = email;
            gl_token = token;

            //Here the email and token are set, but it doesnt set the global variables

        }

        setAccessData();
    });

    it("should have set global email variable", function() {

        //here gl_email should be set, but I get UNDEFINED.

        expect(gl_email).to.eql("virtus-app@virtus.ufcg.edu.br");
    })
});

我相信问题不在于Chakram,因为我还没有在这个代码中使用过。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-04 15:24:00

您的before函数是异步的。您应该使用不同的签名来告诉mocha,它必须等到测试完成后才能运行测试。

代码语言:javascript
复制
before("Getting user data", function(done) {
...

    var test = function(email, token) {
        gl_email = email;
        gl_token = token;

        done();

    }
...
});

只有在done()被调用之后,剩下的代码才会由mocha执行。

Mocha docs有一个关于如何测试异步代码https://mochajs.org/#asynchronous-code的非常全面的指南。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40426174

复制
相关文章

相似问题

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