我有一个Typscript应用程序和API。我针对大量Google搜索编写了以下测试,并在此处以及其他地方找到了一些示例。我认为测试代码中没有问题。谷歌搜索TypeError: chai.request is not a function
,到目前为止,我现在正在哪里。您在下面看到我的错误了吗?
谢谢,谢谢,谢谢您的帮助:-)
答案 0 :(得分:1)
如果启用esModuleInterop
编译器选项,则可以重现该问题。启用此选项后,import * as chai from 'chai';
仅导入chai
模块在导入时具有的成员。确实,我认为在运行时将导出添加到ES模块是不明智的。尝试使用import chai from 'chai';
或import chai = require('chai');
;有人在为我工作。
答案 1 :(得分:0)
您正在混合使用import
和require
语法,这是个坏主意!
仅使用import
语法:
import * as chai from 'chai';
import * as chai-http from 'chai-http'
chai.use(chai-http);
修改
不幸的是,chai-http中似乎不支持es6模块语法。您可以看到问题here
import * as chai from 'chai';
import chaiHttp = require('chai-http');
chai.use(chai-http);
答案 2 :(得分:0)
我可以在自己的机器上重现该问题。这就是我解决的方法。
import * as chai from 'chai';
import chaiHttp = require('chai-http');
chai.use(chaiHttp);
我还需要安装 @ types / chai-http ,以便编译器知道。
npm install @types/chai-http --save-dev
希望有帮助
答案 3 :(得分:0)
非常感谢您的答复!最终,我不得不更改chai.request
的导入位置/方式,并重写了很多测试内容。根据测试中的代码,您可能会认为前5行中的1条或更多条不是必需的,但它们都是 all 。假设其余api在3000上启动,则以下代码可以工作并且测试通过。
我是否正确编写此api请求测试?我现在正在学习Mocha / Chai,所以可能是错误的...
import * as chai from 'chai';
import chaiHttp = require('chai-http');
chai.use(chaiHttp);
import { Response } from 'superagent';
import { request, expect } from 'chai';
describe('AppController', () => {
describe('Route GET /app', () => {
it('Should GET to /app', async () => {
const res: Response = await request('http://0.0.0.0:3000').get('/app');
expect(res).to.have.status(200);
expect(res).to.be.a('object');
});
});
});
答案 4 :(得分:0)
我通过以下方法(带有TypeScript的Express.js)解决了此问题
import chai from 'chai';
import chaiHttp from 'chai-http';
chai.use(chaiHttp);
希望有帮助。
答案 5 :(得分:0)
从github安装
"devDependencies": {
"chai-http": "git+https://github.com/chaijs/chai-http.git",
},