使用`should`测试nodeJS app时出错(undefined不是函数)

时间:2015-10-15 15:20:25

标签: javascript node.js mocha

我想使用mocha进行测试和REST API,所以我有以下代码来测试创建操作:

'use strict';

var should = require('should'); 
var assert = require('assert');
var request = require('supertest');  
var winston = require('winston');


describe('Routing', function() {

  describe('asset', function() {
    it('Crear un nuevo activo en la base de datos y retornarlo', function(done) {
      var asset = {
        "description"      : "Computador portatil",
        "maker"            : "Lenovo",
        "module"           : "Y410",
        "serialNumber"     : "123123",
        "bardCode"         : "21212",
        "account"          : 1212,
        "usefulLife"       : 24,
        "downtimeCosts"    : 200,
        "purchasePrice"    : 120000,
        "assetState_id"    : 1,
        "assetCategory_id" : 3,
        "assetSystem_id"   : 3,
        "supplier"         : 1
      };
    request(url)
    .post('/asset/create')
    .send(asset)
    .end(function(err, res) {
          if (err) {
            throw err;
          }
          console.log (res.should.have);
          res.should.have.status(200);
          done();
        });
    });
  });
});

POST操作如下:

router.post('/create', function(req, res, next) {
  models.asset.create(req.body

  ).then(function(asset) {
    res.send(asset.dataValues)  
  }).catch(function(error) {
    console.log (error);
    res.status(500).send(error);
  });
});

运行测试时,在行Uncaught TypeError: undefined is not a function中得到以下错误res.should.have.status(200);我认为原因是因为我没有明确说明状态响应所以我将res更改为`res.status(200 ).send(asset.dataValues)但不起作用

2 个答案:

答案 0 :(得分:1)

请参阅http://chaijs.com/guide/styles/

var assert = require('chai').assert;
var should = require('chai').should();

答案 1 :(得分:1)

我认为您应该尝试以下代码:

should(res).have.property('status', 200);

它解决了res没有“.should”属性的事实。