Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用passport.js和express.js登录单元测试_Javascript_Node.js_Unit Testing_Express_Passport.js - Fatal编程技术网

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();
    });

})
})