节点.js + Chai/Mocha/Should:针对同一响应运行多个测试

Node.js + Chai/Mocha/Should: running multiple tests against the same response

本文关键字:响应 运行 测试 js Chai Mocha Should 节点      更新时间:2023-09-26

我正在使用与以下内容非常相似的东西来使用摩卡执行一系列 API 测试。这很好,但它需要为每个测试进行单独的 API 调用。我想使用相同的 API 调用并针对该响应运行多个测试。我一直在读到您可以使用before来做到这一点,但是网络上没有一个示例实际上显示它与 API 调用一起工作?

var chai = require('chai');
var request = require('request');
var async = require('async');
var assert = chai.assert,
    expect = chai.expect,
    should = chai.should();
describe('/', function () {
  it('should return 200', function (done) {
    request.get('http://localhost:8000', function (err, res, body) {
      res.should.have.status(200);
      done();
    });
  });
  it('should say "Hello, world!"', function (done) {
    request.get('http://localhost:8000', function (err, res, body) {
      body.should.have.property('type', 'aType');
      done();
    });
  });
});
你可以

用这样的before函数来做到这一点......

var chai = require('chai');
var request = require('request');
var async = require('async');
var assert = chai.assert,
    expect = chai.expect,
    should = chai.should();
describe('/', function () {
  var firstRequest;
  before(function(done) {
    request.get('http://localhost:8000', function(err, res, body) {
      firstRequest = {
        err:err,
        res:res,
        body:body
      };
      done();
    });
  });
  it('should return 200', function (done) {
    firstRequest.res.should.have.status(200);
    done();
  });
  it('should say "Hello, world!"', function (done) {
    firstRequest.body.should.have.property('type','aType');
    done();
  });
});

但是,除非您有充分的理由这样做,否则我认为您最好只是组合测试。

var chai = require('chai');
var request = require('request');
var async = require('async');
var assert = chai.assert,
    expect = chai.expect,
    should = chai.should();
describe('/', function () {
  it('should return 200 and say "Hello, world!"', function (done) {
    request.get('http://localhost:8000', function (err, res, body) {
      res.should.have.status(200);
      body.should.have.property('type', 'aType');
      done();
    });
  });
});
如果测试失败,

即使有两个断言,摩卡也会报告测试失败的具体原因。