Reputation: 199
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. (
Upvotes: 4
Views: 11956
Reputation: 128
Try this import method, it worked for me
import app from '../../server'
import chai from 'chai'
import chaiHttp = require('chai-http')
import 'mocha'
const expect = chai.expect;
chai.use(chaiHttp);
Upvotes: 0
Reputation: 311
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');
})
Upvotes: 4
Reputation: 61
You should add this at the beginning:
var chai = require('chai'), chaiHttp = require('chai-http');
chai.use(chaiHttp);
Upvotes: 6
Reputation: 1751
As per mido's comment on this question, using chai.use(chaiHttp)
worked for me.
Upvotes: 8