TypeScript 无法识别来自超测试的请求响应中的对象?
TypeScript doesn't recognize an object in Request response from supertest?
我正在使用 Supertest 在 TypeScript 中为 非常 简单的 graphql API 编写测试。我收到此错误:Property 'data' does not exist on type 'Response'
,为什么会这样?我还没有告诉它那里会发生什么。但是我怎么能data 紧跟 should.
这是我的简短测试文件。
import chai from "chai";
import { expect } from "chai";
import * as request from "supertest";
import app from "../src";
describe("graphQl test", () => {
it("should respond with hello world", async (done) => {
const returned = await request(app)
.post("/graphql")
.send({ query: "{ hello }"})
.expect(200)
.end((err, res) => {
if (err) { return done(err); }
res.data.should.have.property("hello");
done();
});
expect(returned.data.hello).equal("Hello world!");
});
});
有没有简单的解决方法?如果没有,我想我必须创建某种接口,但在这种情况下我将如何创建接口并将该接口与 TypeScript 通信?我正在搜索,但我还没有看到这样的例子。
您只需要添加超级测试类型,这样编译器就会知道会发生什么。
可以这样做:
npm install --save @types/supertest
我已经安装了所有的输入法。在这种情况下,我认为问题在让 Mocha 与 ts-node
一起工作的过程中得到了解决。 ts-node
不适用于我的全局 typescript
,所以我必须在本地安装它。然后我需要为我的测试添加一个单独的 tsconfig.json
文件并且 VSCode 不再给我这些错误并且编译工作正常。
我正在使用 Supertest 在 TypeScript 中为 非常 简单的 graphql API 编写测试。我收到此错误:Property 'data' does not exist on type 'Response'
,为什么会这样?我还没有告诉它那里会发生什么。但是我怎么能data 紧跟 should.
这是我的简短测试文件。
import chai from "chai";
import { expect } from "chai";
import * as request from "supertest";
import app from "../src";
describe("graphQl test", () => {
it("should respond with hello world", async (done) => {
const returned = await request(app)
.post("/graphql")
.send({ query: "{ hello }"})
.expect(200)
.end((err, res) => {
if (err) { return done(err); }
res.data.should.have.property("hello");
done();
});
expect(returned.data.hello).equal("Hello world!");
});
});
有没有简单的解决方法?如果没有,我想我必须创建某种接口,但在这种情况下我将如何创建接口并将该接口与 TypeScript 通信?我正在搜索,但我还没有看到这样的例子。
您只需要添加超级测试类型,这样编译器就会知道会发生什么。
可以这样做:
npm install --save @types/supertest
我已经安装了所有的输入法。在这种情况下,我认为问题在让 Mocha 与 ts-node
一起工作的过程中得到了解决。 ts-node
不适用于我的全局 typescript
,所以我必须在本地安装它。然后我需要为我的测试添加一个单独的 tsconfig.json
文件并且 VSCode 不再给我这些错误并且编译工作正常。