超级测试/笑话/节点-无法测试简单路由

时间:2018-11-24 18:01:48

标签: javascript node.js jestjs supertest

我已经尝试测试这条路线了4个小时,但似乎无法使其正常工作。

所以我有一条这样的路线:

api.post('/register', (req, res) => {
    let hasErrors = false
    if(!req.body.name || !req.body.email || !req.body.password){
        hasErrors = true
    }
    if(hasErrors){
        res.status(errCode.invalid_input).json({
            message: 'Invalid input'
        })
    }else{
    const NewUser = new User({
        _id : mongoose.Types.ObjectId(),
      name: req.body.name,
      email: req.body.email,
      password: req.body.password
    });
        NewUser.save().then(saved_user => {
      res.status(201).json({
        message: 'User registered',
        user: saved_user
      });
    }).catch(err => {
      res.status(500).json({
        message: err
      });
    })
  }
})

...我正在使用Jest和Supertest进行测试:

it('/register should return 201 if valid input', (done) => {
    //mock valid user input
    const NewUser = {
        'name': 'John Wick',
        'email': 'john@wick.com',
        'password': 'secret'
    }
    request(app)
        .post('/register')
        .type('form')
        .send(NewUser)
        .expect(201)
        .end((err) => {
            if (err) return done(err)
            done()
        })
})

测试即将结束,它给了我Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.

我已经用Postman手动测试了/ register端点,确实,当我使用 Form URL Encoded 数据(名称,电子邮件,密码)调用/ register端点时,它可以工作并添加新的我的数据库中的条目。如果我以多部分表格的形式发送数据,它将无法正常工作,并显示422无效输入。也许这就是我的问题所在?

干杯!

0 个答案:

没有答案