NodeJS/Passport -使用mocha和superagent测试用户登录
NodeJS/Passport - Testing user login with mocha and superagent
我已经用基本的MEAN堆栈构建了一个登录过程,并使用护照进行身份验证过程。
我正试图设置一个测试,以确保登录过程是工作的。下面是我使用的登录部分代码:
it ('login', function(done) {
agent.post(config.web.vhost + '/login')
.send({ email: 'bruce@wayne.inc', password: 'batman' })
.end(function(err, res) {
if (err) console.log('error' + err.message);
res.should.have.status(200);
done();
});
});
我得到以下错误:
没有错误电子邮件:bruce@wayne.inc․没有错误socket挂起․双调!
1 passing (2s)
1 failing
1) User login:
Uncaught TypeError: Cannot read property 'should' of undefined
我知道我的路线和证书是好的,但我不知道什么不工作在这里。这是我用户测试的第一步,所以我可能没有得到正确的东西。
下面是我测试的其余部分:
var should = require("should");
var mongoose = require('mongoose');
var request = require('superagent');
var agent = request.agent();
var config = require("../settings/conf");
var dbUrl = require("../config/database.js");
var User = require('../server/models/user');
var db;
describe('User', function() {
before(function(done) {
db = mongoose.connect(dbUrl.url);
done();
});
after(function(done) {
mongoose.connection.close()
done();
});
beforeEach(function(done) {
var user = new User({
email: 'bruce@wayne.inc',
password: 'batman',
firstName: 'Bruce',
lastName: 'Wayne'
});
user.save(function(err, user) {
if (err) console.log('error' + err.message);
else console.log('no error');
done();
});
});
it('find a user by username', function(done) {
User.findOne({ email: 'bruce@wayne.inc' }, function(err, user) {
user.email.should.eql('bruce@wayne.inc');
console.log(" email: ", user.email)
done();
});
});
it ('login', function(done) {
agent.post(config.web.vhost + '/login')
.send({ email: 'bruce@wayne.inc', password: 'batman' })
.end(function(err, res) {
if (err) console.log('error' + err.message);
res.should.have.status(200);
done();
});
});
afterEach(function(done) {
User.remove({ email: 'bruce@wayne.inc' }, function() {
done();
});
});
});
我注意到您看到的失败是connect ECONNREFUSED
—所以这不是关于passport的任何事情,只是您没有成功连接到agent.post
中的服务器。
我猜你的config.web.vhost值没有正确设置,或者不是superagent正在寻找的正确形式(例如,superagent可能需要一个完整的绝对url,前面有'http://',而你的vhost值可能只是主机名)。
相关文章:
- 模糊事件的Javascript测试
- 我的单元测试选项是什么
- 测试索引值是否等于某个数字的倍数
- 在localhost Dev Box上测试JSONP请求的最佳方式
- 测试数组中每个项的内容
- 测试Angular Service解决错误回调中的promise
- 使用Jest测试React Native应用程序
- 为函数代码编写测试
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- 如何使用JS/nightwatchjs并行运行多个测试
- 使用量角器的当前url单元测试的getTitle
- 茉莉花宝石-耙茉莉花:ci dons't运行测试
- JavaScript滚动脚本-在测试中激发,而不是在开发站点上
- AngularJS指令单元测试中未定义的函数
- 一个密码测试程序,如果存在空格,它会提醒用户
- 测试角度解析方法
- Protractor:在Iframe中测试非角度应用程序
- 使用Mocha和Superagent在裸Node.js应用程序中测试帖子
- TheIntern.IO测试运行程序实习生客户端问题“;试图要求卸载的模块superagent”
- NodeJS/Passport -使用mocha和superagent测试用户登录