使用请求js进行http服务单元测试时,chai.request不是一个函数

时间:2016-05-05 01:32:48

标签: javascript mocha karma-runner chai requestjs

我一直在使用karma + requestjs + mocha + chai和sinon。我一直在使用chai-http模块但收到chai.request不是一个函数。请指出我在哪里弄错了我google了很多没有运气呢。

(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();
                      });

             });

        });
    });

错误 TypeError:chai.request不是函数             在上下文。 (

3 个答案:

答案 0 :(得分:6)

根据mido对此问题的评论,使用chai.use(chaiHttp)为我工作。

答案 1 :(得分:3)

您应该在开头添加:

var chai = require('chai'), chaiHttp = require('chai-http');

chai.use(chaiHttp);

答案 2 :(得分:0)

我遇到了问题,但要解决该问题,我检查了柴库中的内容(使用console.log),发现请求功能位于默认节点下。

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。

  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');
    })