Я использую машинопись с экспресс в моем проекте.Я использую мокко и чай для модульного тестирования.Мой package.json выглядит следующим образом:
{
"name": "node_ts",
"version": "1.0.0",
"description": "",
"main": "dist/server.js",
"scripts": {
"lint": "./node_modules/.bin/tslint --project \".\"",
"build": "babel src --out-dir lib --extensions \".ts,.tsx\"",
"serve": "npm run build && tsc && node lib/server.js",
"compile": "tsc && node lib/server.js",
"start": "nodemon -e ts --exec \"npm run build && npm run compile\"",
"test": "mocha --compilers babel-register-ts src/**/*.spec.ts"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@babel/cli": "^7.2.3",
"@babel/core": "^7.2.2",
"@babel/plugin-proposal-object-rest-spread": "^7.3.1",
"@babel/preset-env": "^7.3.1",
"@babel/preset-typescript": "^7.1.0",
"@types/chai": "^4.1.7",
"@types/mocha": "^5.2.5",
"babel-register": "^6.26.0",
"chai": "^4.2.0",
"mocha": "^5.2.0",
"nodemon": "^1.18.9",
"ts-node": "^8.0.2",
"tslint": "^5.12.1",
"typescript": "^3.3.1"
},
"dependencies": {
"@babel/plugin-proposal-class-properties": "^7.3.0",
"@babel/register": "^7.0.0",
"@types/chai-http": "^3.0.5",
"@types/express": "^4.16.1",
"babel-register-ts": "^7.0.0",
"chai-http": "^4.2.1",
"express": "^4.16.4"
}
}
, когда я запускаю свой сервер, используя
npm run start
У меня возникают следующие проблемы.
node_modules/chai-http/types/index.d.ts:51:19 - error TS2430: Interface 'ChaiHttp.Response' incorrectly extends interface 'import("/home/anshu/projects/node_ts/node_modules/@types/superagent/index").Response'.
Types of property 'setEncoding' are incompatible.
Type '(encoding: string) => void' is not assignable to type '(encoding: string) => this'.
Type 'void' is not assignable to type 'this'.
51 interface Response extends request.Response {}
~~~~~~~~
node_modules/chai-http/types/index.d.ts:52:19 - error TS2430: Interface 'Agent' incorrectly extends interface 'SuperAgentStatic'.
Types of property 'del' are incompatible.
Type '(url: string, callback?: (err: any, res: Response) => void) => Request' is not assignable to type '(url: string, callback?: CallbackHandler) => SuperAgentRequest'.
Types of parameters 'callback' and 'callback' are incompatible.
Types of parameters 'res' and 'res' are incompatible.
Type 'ChaiHttp.Response' is not assignable to type 'import("/home/anshu/projects/node_ts/node_modules/@types/superagent/index").Response'.
Types of property 'setEncoding' are incompatible.
Type '(encoding: string) => void' is not assignable to type '(encoding: string) => Response'.
Type 'void' is not assignable to type 'Response'.
52 interface Agent extends request.SuperAgentStatic {
~~~~~
Found 2 errors.
Такжекогда я пытаюсь запустить свой тестовый набор, используя
mocha --compilers babel-register-ts src/**/*.spec.ts
Я получаю сообщение об ошибке: TypeError: chai.request не является функцией
Мой тестовый файл выглядит следующим образом:
#hello.ts
import app from "../app";
import * as chai from "chai";
import chaiHttp from "chai-http";
import "mocha";
chai.use(chaiHttp);
const expect = chai.expect;
describe("Hello API Request", () => {
it("should return response on call", () => {
return chai.request(app).get("/")
.then(res => {
expect(res).to.eql("lee");
});
});
});
Я думаю, это из-за chai-http.Может ли кто-нибудь помочь решить эту проблему или предложить альтернативное решение.