如何在 mocha nodejs 中使用 passport js 对我的 facebook 登录进行单元测试?
How can I unit test my facebook login using passport js in mocha nodejs?
我是单元测试的新手。我一直在为 Nodejs 使用 mocha 编写测试用例。在我的例子中,需要为 facebook 登录编写测试用例。我首先尝试使用 facebook-mock 但我无法完成 task.This 是我使用 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)
请任何人指导我解决这个问题。如果有任何其他特定框架可用,请指导我。 提前致谢!!
我已经解决了这个问题!!!
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();
});
});
我是单元测试的新手。我一直在为 Nodejs 使用 mocha 编写测试用例。在我的例子中,需要为 facebook 登录编写测试用例。我首先尝试使用 facebook-mock 但我无法完成 task.This 是我使用 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)
请任何人指导我解决这个问题。如果有任何其他特定框架可用,请指导我。 提前致谢!!
我已经解决了这个问题!!!
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();
});
});