如何使用mocha nodejs中的护照js对我的facebook登录进行单元测试?

时间:2016-06-22 05:47:32

标签: node.js mocha passport.js zombie.js

我是单元测试的新手。我一直在使用mocha为Nodejs编写测试用例。在我的情况下需要为facebook登录编写测试用例。我首先尝试使用facebook-mock,但我无法完成任务。这是我使用 zombie 的测试用例,

var chai = require('chai');    
var assert = chai.assert;    
var server;    
var Browser = require('zombie');    
describe("login using social sites",function () {
  this.timeout(40000);
  beforeEach(function () {
    server = require('../../../server').server;
    browser = new Browser({ site: 'http://localhost:3000' });
  });
        it("should login with facebook",function (done) {

        browser.visit('/auth/facebook',function (err,brw) {

            if(err){
                throw err;
            }

            assert.equal(brw.location.pathname, '/auth/facebook/callback');

            done();

        });



    });


    afterEach(function () {
        server.close();
    });

});

server.js 文件是,

var express = require('./config/express');

var app = express();

var server = app.listen(3000, function () {
    var port = server.address().port;
    console.log('Server running at %s', port);
});

module.exports = {
    app : app,
    server : server
};

这是我在执行单元测试后得到的错误,

 1) login using social sites should login with facebook:
     Uncaught TypeError: connect ECONNREFUSED 127.0.0.1:3000
      at G:\Janani\Tasks\CCSProject\node_modules\zombie\lib\pipeline.js:89:15
      at tryCatcher (G:\Janani\Tasks\CCSProject\node_modules\zombie\node_modules\bluebird\js\release\util.js:16:23)
      at Promise._settlePromiseFromHandler (G:\Janani\Tasks\CCSProject\node_modules\zombie\node_modules\bluebird\js\release\promise.js:504:31)
      at Promise._settlePromise (G:\Janani\Tasks\CCSProject\node_modules\zombie\node_modules\bluebird\js\release\promise.js:561:18)
      at Promise._settlePromise0 (G:\Janani\Tasks\CCSProject\node_modules\zombie\node_modules\bluebird\js\release\promise.js:606:10)
      at Promise._settlePromises (G:\Janani\Tasks\CCSProject\node_modules\zombie\node_modules\bluebird\js\release\promise.js:681:18)
      at Async._drainQueue (G:\Janani\Tasks\CCSProject\node_modules\zombie\node_modules\bluebird\js\release\async.js:138:16)
      at Async._drainQueues (G:\Janani\Tasks\CCSProject\node_modules\zombie\node_modules\bluebird\js\release\async.js:148:10)
      at Immediate.Async.drainQueues [as _onImmediate] (G:\Janani\Tasks\CCSProject\node_modules\zombie\node_modules\bluebird\js\release\async.js:17:14)

请任何人指导我解决此问题。如果有任何其他具体框架,请指导我。 提前致谢!!

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题!!!

describe("login using social sites",function () {

    this.timeout(40000);


    beforeEach(function () {
        server = require('../../../server').server;

        // browser = new Browser({ site: 'http://localhost:3000' });



    });


    it("should login with facebook",function (done) {

        Browser.visit('http://127.0.0.1:3000/auth/facebook',function (err,brw) {

            if(err){
                throw err;
            }

            brw.fill('email','aaa@gmail.com').fill('pass', 'password')
                .pressButton('login', function (err,brow) {
                    brw.assert.success();
                    done();
                });

        });



    });


    afterEach(function () {
        server.close();
    });

});