直到下一行才定义超级代理响应主体
Superagent response body undefined until next line
我正在使用 Jest 和 Supertest 测试我的快递 API。由于某种原因,这不起作用:
const id = await request.post('/program')
.send(body)
.expect('Content-Type', /json/)
.expect(201).body.id;
失败并出现错误:
TypeError: Cannot read property 'id' of undefined
154 | sessionId: defaults.authorId
155 | };
> 156 | const id = await request.post('/program')
| ^
157 | .send(body)
158 | .expect('Content-Type', /json/)
159 | .expect(201).body.id;
at Object.<anonymous> (tests/program.test.js:156:27)
但是,只需将 .body.id
移动到下一行即可解决问题。
const res = await request.post('/program')
.send(body)
.expect('Content-Type', /json/)
.expect(201);
const id = res.body.id;
为什么会这样?请求是否未 await
正确编辑?
在第一种情况下,您正在从 expect(201)
的 return 值中读取属性。
由于 return 值没有 body
属性,当您尝试从中读取 id
属性 时它会崩溃。
在第二种情况下,您正在从服务器的响应中读取 body.id
。当您 return 使用 id
属性的对象时,您可以读取它。
如果您想检查您的方法是否正在 returning 一个带有 id
属性 的对象,您可以这样做:
const res = await request.post('/program')
.send(body)
.expect('Content-Type', /json/)
.expect({ id: 201 });
我正在使用 Jest 和 Supertest 测试我的快递 API。由于某种原因,这不起作用:
const id = await request.post('/program')
.send(body)
.expect('Content-Type', /json/)
.expect(201).body.id;
失败并出现错误:
TypeError: Cannot read property 'id' of undefined
154 | sessionId: defaults.authorId
155 | };
> 156 | const id = await request.post('/program')
| ^
157 | .send(body)
158 | .expect('Content-Type', /json/)
159 | .expect(201).body.id;
at Object.<anonymous> (tests/program.test.js:156:27)
但是,只需将 .body.id
移动到下一行即可解决问题。
const res = await request.post('/program')
.send(body)
.expect('Content-Type', /json/)
.expect(201);
const id = res.body.id;
为什么会这样?请求是否未 await
正确编辑?
在第一种情况下,您正在从 expect(201)
的 return 值中读取属性。
由于 return 值没有 body
属性,当您尝试从中读取 id
属性 时它会崩溃。
在第二种情况下,您正在从服务器的响应中读取 body.id
。当您 return 使用 id
属性的对象时,您可以读取它。
如果您想检查您的方法是否正在 returning 一个带有 id
属性 的对象,您可以这样做:
const res = await request.post('/program')
.send(body)
.expect('Content-Type', /json/)
.expect({ id: 201 });