Javascript 使用passport.js和express.js登录单元测试
我正在测试我的本地登录名。我已经用Javascript 使用passport.js和express.js登录单元测试,javascript,node.js,unit-testing,express,passport.js,Javascript,Node.js,Unit Testing,Express,Passport.js,我正在测试我的本地登录名。我已经用passport.js实现了它,遵循了它的指南和这个框架 我很确定实现是好的,但是测试中存在一些错误,总是无法通过身份验证 如果身份验证失败,则应重定向到“/登录”如果身份验证正确,则应转到“/” 但是当我测试时,身份验证总是失败 这是routes.js: passport.js: 和测试:api.js: var用户、应用程序、猫鼬、请求、服务器、应该、用户; 应该=要求(“应该”); app=require(“../server”); 猫鼬=需要(“猫鼬”);
passport.js
实现了它,遵循了它的指南和这个框架
我很确定实现是好的,但是测试中存在一些错误,总是无法通过身份验证
如果身份验证失败,则应重定向到“/登录”如果身份验证正确,则应转到“/” 但是当我测试时,身份验证总是失败 这是routes.js: passport.js: 和测试:api.js:
var用户、应用程序、猫鼬、请求、服务器、应该、用户;
应该=要求(“应该”);
app=require(“../server”);
猫鼬=需要(“猫鼬”);
User=mongoose.model(“用户”);
请求=要求(“超级测试”);
服务器=请求。代理(“http://localhost:3000");
描述(“,函数(){
返回描述(“API用户:”,函数(){
之前(功能(完成){
用户=新用户({
电子邮件:“user@user.com",
名字:“全名”,
姓氏:“姓氏”,
密码:“pass11”
});
user.save();
返回完成();
});
描述(“身份验证”,函数(){
返回它(“本地登录”,函数(完成){
返回server.post(“/users/session”).send({
电子邮件:“user@user.com",
密码:“pass11”
}).end(函数(err、res){
res.headers.location.should.have.equal(“/”);
返回完成();
});
});
});
返回后(函数(完成){
User.remove().exec();
返回完成();
});
});
});
这是终端显示的内容:
<Unit Test>
API User:
Authentication
1) Local login
0 passing (24ms)
1 failing
1) <Unit Test> API User: Authentication Local login:
actual expected
/signin
API用户:
认证
1) 本地登录
0通过(24毫秒)
1失败
1) API用户:身份验证本地登录:
实际预期
/签名
我正在尝试使用此代码并按预期工作
var User, app, mongoose, request, server, should, user, agent;
should = require("should");
app = require("../server");
mongoose = require("mongoose");
User = mongoose.model("User");
request = require("supertest");
agent = request.agent(app)
describe('User', function () {
before(function(done) {
user = new User({
email : "user@user.com",
firstName: "Full Name",
lastName : "Last Name",
password : "pass11"
});
user.save(done)
});
describe('Login test', function () {
it('should redirect to /', function (done) {
agent
.post('/users/session')
.field('email', 'user@user.com')
.field('password', 'pass11')
.expect('Location','/')
.end(done)
})
after(function(done) {
User.remove().exec();
return done();
});
})
})
如需更多参考,请查看此
这是我的截图
是啊!谢谢!我的问题出在
server=request.agent(“http://localhost:3000");代码>。我已经把server=request.agent(app)代码>仅此而已!;)我有一个非常相似的登录和身份验证。我正在尝试根据我的需要修改此代码。由于某些原因,测试用户未在my DB中创建。这可能是什么原因?上面的单元测试只是为了测试。该过程是插入新用户,检查登录测试,然后在测试后删除用户。因此,测试完成后,应该删除用户。
var User, app, mongoose, request, server, should, user;
should = require("should");
app = require("../server");
mongoose = require("mongoose");
User = mongoose.model("User");
request = require("supertest");
server = request.agent("http://localhost:3000");
describe("<Unit Test>", function() {
return describe("API User:", function() {
before(function(done) {
user = new User({
email : "user@user.com",
firstName: "Full Name",
lastName : "Last Name",
password : "pass11"
});
user.save();
return done();
});
describe("Authentication", function() {
return it("Local login", function(done) {
return server.post("/users/session").send({
email : "user@user.com",
password: "pass11"
}).end(function(err, res) {
res.headers.location.should.have.equal("/");
return done();
});
});
});
return after(function(done) {
User.remove().exec();
return done();
});
});
});
<Unit Test>
API User:
Authentication
1) Local login
0 passing (24ms)
1 failing
1) <Unit Test> API User: Authentication Local login:
actual expected
/signin
var User, app, mongoose, request, server, should, user, agent;
should = require("should");
app = require("../server");
mongoose = require("mongoose");
User = mongoose.model("User");
request = require("supertest");
agent = request.agent(app)
describe('User', function () {
before(function(done) {
user = new User({
email : "user@user.com",
firstName: "Full Name",
lastName : "Last Name",
password : "pass11"
});
user.save(done)
});
describe('Login test', function () {
it('should redirect to /', function (done) {
agent
.post('/users/session')
.field('email', 'user@user.com')
.field('password', 'pass11')
.expect('Location','/')
.end(done)
})
after(function(done) {
User.remove().exec();
return done();
});
})
})