我是单元测试的新手。我一直在使用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)
请任何人指导我解决此问题。如果有任何其他具体框架,请指导我。 提前致谢!!
答案 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();
});
});