【问题标题】:How to fix mocha test on a route?如何修复路线上的摩卡测试?
【发布时间】:2019-06-13 05:32:27
【问题描述】:

我有一条路线,我正在这条路线上进行摩卡咖啡测试。测试失败并显示错误消息 未捕获的 AssertionError:预期未定义等于 201'

我已经检查了测试用例,一切似乎都很好。任何知道可能出了什么问题的人

测试

import chai from 'chai';
import chaiHttp from 'chai-http';
import app from '../src/app';
import vehicles from '../src/db/carDb';

const { expect } = chai;
chai.use(chaiHttp);

describe('Car', () => {
  it('should create new car in app', (done) => {
    const car = {
      state: 'used',
      status: 'available',
      price: 2000000,
      manufacturer: 'toyota',
      model: 'camry',
      bodyType: 'car',
    };
    chai.request(app)
      .post('/api/v1/car')
      .send(car)
      .end((err, res) => {
        const { body } = res;
        if (err) done(err);
        expect(res).to.be.an('object');
        expect(body.status).to.equal(201);
        expect(res.body.message).to.be.equal('Vehicle created successfully');
        done();
      });
  });
});

控制器

static createCar(req, res) {
    const { errors, isValid } = validateNewCar(req.body);
    if (!isValid) {
      return res.status(400).json({ errors });
    }
    const vehicle = {
      id: vehicles.length + 1,
      userId: 3,
      state: req.body.state,
      status: 'available',
      price: req.body.price,
      manufacturer: req.body.manufacturer,
      model: req.body.model,
      bodyType: req.body.bodyType
    };

    vehicles.push(vehicle);
    return res.status(201).json({
      status: 201,
      message: 'Vehicle created successfully',
      data: vehicle,
    });
  }

我希望测试通过,但应用返回 undefined

【问题讨论】:

    标签: node.js mocha.js chai-http


    【解决方案1】:
    expect(body.status).to.equal(201);
    

    您的错误显示 body.statusundefined

    如果您查看chai-httpdocumentation 并查找status,您会发现它们使用了专门设计的语法:

    expect(res).to.have.status(201);
    

    但是,您可能(没有测试)以standard http.ServerResponse 实例的形式到达状态代码,它不会在正文中,而是:

    expect(res.statusCode).to.equal(201);
    

    【讨论】:

    • 试过这个,得到 500 错误。只有当我向控制器添加验证时才会发生这种情况
    • @Dolapo 500,就像服务器崩溃是因为你改变了它的测试?看起来很奇怪 - 无关? - 对我来说!
    猜你喜欢
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 2018-02-03
    相关资源
    最近更新 更多