chai.request is not a function while using request js for http service unit test
11,023
Solution 1
As per mido's comment on this question, using chai.use(chaiHttp)
worked for me.
Solution 2
You should add this at the beginning:
var chai = require('chai'), chaiHttp = require('chai-http');
chai.use(chaiHttp);
Solution 3
I got the problem but to solve it I checked what is in the chai library (using console.log) and I found that the request function is under default node.
import * as chai from 'chai';
import chaiHttp = require('chai-http');
chai.use(chaiHttp);
//Parse the assertion library to get the request function as chai.request is not found
let chaiLib = <any>chai;
let chaiRequestLib = chaiLib.default.request;
chaiRequestLib can be used then.
return chaiRequestLib(server).post('/api/product')
.send(product)
.then((res: any) => {
res.should.have.status(200);
res.body.should.be.a('object');
chai.assert.equal(res.body.affectedRows, 1 , '"Dexeryl Cream 250g" product not created');
})
Author by
aka
Updated on June 08, 2022Comments
-
aka almost 2 years
I have been using karma+requestjs + mocha + chai and sinon. i have been using chai-http module yet receives chai.request is not a function.please suggest where i am making mistake i have googled lot no luck yet.
(function() { var specFiles = null; var baseUrl = ''; var requirejsCallback = null; if (typeof window != 'undefined' && window.__karma__ != undefined) { baseUrl = '/base'; requirejsCallback = window.__karma__.start; specFiles = []; for (var file in window.__karma__.files) { if (window.__karma__.files.hasOwnProperty(file)) { if (/.*\/js\/spec\/.+_spec\.js$/.test(file)) { specFiles.push(file); } } } } requirejs.config({ baseUrl: baseUrl, paths: { 'chai': './node_modules/chai/chai', 'sinon': './node_modules/sinon/pkg/sinon', 'chaihttp': './node_modules/chai-http/dist/chai-http', }, deps: specFiles, callback: requirejsCallback }); })(); **Spect-Test.js** define(['chai', 'sinon', 'chaihttp'], function (chai, sinon, chaihttp) { var expect = chai.expect; describe('Service', function () { it('abctest', function () { var abccode = { "abc": "1" }; var url = 'http://localhost:1234'; chai.request(url) .post('test/testService') .send(abccode ) .end(function (err, res) { if (err) { throw err; } expect(res.status).to.equal(200); done(); }); }); }); });
Error TypeError: chai.request is not a function at Context. (
-
mido about 8 yearsmay be you missed the line
chai.use(chaiHttp)
... -
aka about 8 years@mido i tried chai.use('chai-http') but now gives hrome (Windows 10 0.0.0) ERROR: TypeError{} Chrome (Windows 10 0.0.0): Executed 0 of 0 ERROR (0.029 secs / 0 secs)
-
aka about 8 yearsvar chai = require('chai'); var chaiHttp = require('chai-http'); var expect = chai.expect; var should = chai.should; chai.use(chaiHttp); Module name "chai-http" has not been loaded yet for context: _. Use require([])(…)
-
Abilash Arjunan almost 7 years
var chai = require('chai'), chaiHttp = require('chai-http'), chai.use(chaiHttp);
nowchai.request(server)...
worked for me
-
-
Moses about 5 yearsi have done this exactly, works fine with typescript but doesnt run for transpiled js. It gives the same error after build