Как исправить код, моя проверка делает мокко плохо себя ведет во время тестирования - PullRequest
0 голосов
/ 12 июня 2019

У меня есть маршрут для создания новых автомобилей.Маршрут отлично работает при тестировании на почтальоне, но когда я запускаю тест MOCHA на нем.Я получаю код состояния 500 вместо ожидаемого 201.

Я выполнил некоторые неполадки и обнаружил, что моя проверка является причиной этой проблемы, но я не могу понять, где

тест мокко

describe('Car', () => {

  it('should create a new vehicle item', (done) => {

    const vehicle = {
      state: 'new',
      status: 'available',
      price: 1200000,
      manufacturer: 'honda',
      model: 'accord',
      bodyType: 'car',
    };

    chai.request(app)
      .post('/api/v1/car')
      .send(vehicle)
      .end((err, res) => {
        if (err) done(err);
        const { body } = res;
        expect(body).to.be.an('object');
        expect(body.status).to.equal(201);
        done();
      });
  });
});

проверка

const validateCarInput = (data) => {
  const errors = {};

  data.state = isEmpty(data.state) === true ? '' : data.state;

  data.status = isEmpty(data.status) === true ? '' : data.status;

  data.price = isEmpty(data.price) === true ? '' : data.price;

  data.manufacturer = isEmpty(data.manufacturer) === true ? '' : data.manufacturer;

  data.model = isEmpty(data.model) === true ? '' : data.model;

  data.bodyType = isEmpty(data.bodyType) === true ? '' : data.bodyType;

  if (!Validator.isAlpha(data.state)) {
    errors.state = 'State must be in alphabet';
  }

  if (Validator.isEmpty(data.state)) {
    errors.state = 'State of vehicle is required';
  }

  if (!Validator.isNumeric(data.price)) {
    errors.price = 'price should be number and in this format (0.00)';
  }

  if (Validator.isEmpty(data.price)) {
    errors.price = 'Price of vehicle is required';
  }

  if (!Validator.isAlpha(data.manufacturer)) {
    errors.manufacturer = 'Manufacturer must be in alphabets';
  }

  if (Validator.isEmpty(data.manufacturer)) {
    errors.manufacturer = 'Manufacturer of vehicle is required';
  }

  if (!Validator.isAlphanumeric(data.model)) {
    errors.model = 'Model of vehicle can only be alphanumeric';
  }

  if (Validator.isEmpty(data.model)) {
    errors.model = 'Model of vehicle is required';
  }

  if (!Validator.isAlpha(data.bodyType)) {
    errors.bodyType = 'Body-type must be alphabets';
  }

  if (Validator.isEmpty(data.bodyType)) {
    errors.bodyType = 'Body-type of vehicle is required';
  }

  return {
    errors,
    isValid: isEmpty(errors),
  };
};

автомобильный маршрут

class carController {
  static createCar(req, res) {
    const { errors, isValid } = validateCarInput(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,
    });
  }

Я ожидаю, что Мокко выдает код состояния 201, но вместо этого я получаю 500. Я использовал аналогичный тест намаршруты пользователей и тесты mocha отлично работают на этом маршруте

...