Как закрепить тест мокко на маршруте? - PullRequest
0 голосов
/ 13 июня 2019

У меня есть маршрут, я выполняю тест мокко на этом маршруте. тест не пройден с сообщением об ошибке Uncaught AssertionError: ожидается, что undefined будет равен 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,
    });
  }

Я ожидаю, что тест пройден, но приложение возвращает неопределенное значение

1 Ответ

0 голосов
/ 13 июня 2019
expect(body.status).to.equal(201);

Ваша ошибка говорит, что body.status - это undefined.

Если вы посмотрите chai-http документацию и ищите status, вы 'Вы увидите, что они используют специально разработанный синтаксис:

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

Однако вы, вероятно, можете (не проверяли) достичь кода состояния как стандартный http.ServerResponse экземпляр, которыйне было бы в теле, вместо этого было бы:

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