【问题标题】:API Route Testing Unexpected ResultsAPI 路由测试意外结果
【发布时间】:2018-02-03 18:32:50
【问题描述】:

我现在正在编写一个 MEAN API,我有一个名为 /authenticate 的路由,用户可以在其中登录。下面我展示了它自己的路由。

 // User Login Route - http://localhost:8080/api/authenticate
router.post('/authenticate', function(req, res) {
   User.findOne({ username: req.body.username }).select('email username password').exec(function(err, user) {
      if (err) throw err;

      if (!user) {
          res.json({ success: false, message: 'Could not authenticate user.'});
      } else if (user) {
            //Using comparePassword Method
          if (req.body.password) {
              var validatePassword = user.comparePassword(req.body.password);
              if (!validatePassword) {
                  res.json({success : false, message : 'Could not authenticate password!'});
              }
              else{
                  res.status(200).json({success : true, message : 'User authenticated!'});
              }
          }
          else{
              res.json({success : false, message : 'Not password provided!'});
          }
      }
   });
});

我现在正在尝试使用 mocha 和 chai 库测试路线。下面我展示了我用来测试这个功能的描述块。

describe('POST /authenticate', function() {
   it('should return an error', function (done) {
      var newUser = {
          "username" : "testetet",
          "password" : "hgfhghg"
      };
      chai.request(server)
          .post('/api/authenticate')
          .send(newUser)
          .end(function (err, res) {
              expect(res).to.have.status(201);
              expect(res.body).to.have.property('message').equal('User Created.');
          });
      done();
   });
});

正如您从上面的测试中看到的那样,测试应该失败,因为测试中的任何响应标准都不匹配应该从 API 返回的响应,但每次我运行它时它仍然会继续通过。

有没有人知道为什么会发生这种情况? 感谢您提前提供任何帮助。

【问题讨论】:

  • 你有没有看过测试中的实际结束块?真的达到了吗?

标签: javascript node.js testing mocha.js chai


【解决方案1】:

大家好,问题是测试代码中的 done() 放错了地方。它应该类似于下面的代码。

it('should return a user authenticated message', function (done) {
        var user = {
            "username": "testuser1",
            "password": "testPassword1"
        };
        chai.request(server)
            .post('/api/authenticate')
            .send(user)
            .end(function (err, res) {
                expect(res).to.have.status(200);
                expect(res.body).to.have.property('message').equal('User Authenticated!');
                done();
            });
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多