javascript 使用超级测试实现测试API时添加expect方法时出错

tjjdgumg  于 2023-01-01  发布在  Java
关注(0)|答案(2)|浏览(86)

我正在尝试使用supertest测试我的用户端点:

router.post("/users", async (req, res) => {
  const user = new User(req.body);
  try {
    await user.save();
    const token = await user.generateAuthToken();
    res.status(201).send({ user: user, token: token });
  } catch (e) {
    res.status(400).send(e);
  }
});

我的user.test.js看起来像这样:

const request = require("supertest");
  const app = require("../src/app");

  test("Should signup a new user", async () => {
  await request(app)
    .post("/users")
    .send({
      name: "Andrew",
      email: "andrew@example.com",
      password: "MyPass777!",
    })
    .expect(201);
});

当我运行这个代码时,我得到了这个错误:

但是当我删除.expect(201)时一切都很好,你能帮我吗?

kq4fsx7k

kq4fsx7k1#

尝试使用这个代替:

const {status} = await request(app)
    .post("/users")
    .send({
      name: "Andrew",
      email: "andrew@example.com",
      password: "MyPass777!",
    })
  
  expect(status).toBe(201);
4nkexdtk

4nkexdtk2#

我也有同样的问题。试过了

const {status} = await request(app)
    .post("/users")
    .send({
      name: "Andrew",
      email: "andrew@example.com",
      password: "MyPass777!",
    })
  
  expect(status).toBe(201)

不起作用而且我试过了

try {
 await request(app).post('/users').send({
     name: 'Andrew',
     email: 'andrew@example.com',
     password: 'MyPass777!'
 }).expect(201)
    }catch(e) {
          console.log(e)
 }

仍然得到404错误,但测试正在通过在稍后的情况下。我的其他一切都是一样的,在原来的问题。

相关问题