Я создаю приложение API в NodeJS, используя инфраструктуру Serverless.Я установил serverless-mocha-plugin
и пытаюсь создать несколько модульных тестов для своих функций.
В моем файле serverless.yml
есть следующие конечные точки:
...
equipmentGetAll:
handler: ./api/equipment/equipment.getAll
events:
- http:
path: equipment
method: get
cors: true
equipmentGetOne:
handler: ./api/equipment/equipment.getOne
events:
- http:
path: equipment/{po_number}
method: get
cors: true
...
При тестированииgetAll
конечная точка, я использую следующий тест, который успешно проходит.Я подтвердил, что он работает, зарегистрировав ответ на консоль.
'use strict';
// tests for equipmentGetAll
// Generated by serverless-mocha-plugin
const mochaPlugin = require('serverless-mocha-plugin');
const expect = mochaPlugin.chai.expect;
let wrapped = mochaPlugin.getWrapper('equipmentGetAll', '/api/equipment/equipment.js', 'getAll');
describe('equipmentGetAll', () => {
before((done) => {
done();
});
it('should get all Equipment', () => {
return wrapped.run({po_number:117}).then((response) => {
expect(response.statusCode).to.be.equal(200);
expect(response.body.length).to.be.greaterThan(0);
});
});
});
Аналогично, для конечной точки getOne
я (на данный момент) выполняю очень похожий тест:
'use strict';
// tests for equipmentGetOne
// Generated by serverless-mocha-plugin
const mochaPlugin = require('serverless-mocha-plugin');
const expect = mochaPlugin.chai.expect;
let wrapped = mochaPlugin.getWrapper('equipmentGetOne', '/api/equipment/equipment.js', 'getOne');
describe('equipmentGetOne', () => {
before((done) => {
done();
});
it('should get one single Equipment', () => {
return wrapped.run({}).then((response) => {
expect(response.statusCode).to.be.equal(200);
expect(response.body.length).to.be.equal(1);
});
});
});
Проблема
Текущий ответ, который я получаю для getOne
:
{
statusCode: 500,
headers: { 'Content-Type': 'text/plain' },
body: 'Cannot read property \'po_number\' of undefined'
}
Из-за того, что путь для getOne
из serverless.yml
означает equipment/{po_number}
, а не просто equipment/
.
Как правильно передать значение пути для теста?
Пример вызованажмите конечную точку my-api-endpoint.com/equipment/117
и верните Оборудование с помощью po_number
117
.Это работает правильно при тестировании с POSTMan, но как я могу заставить его работать с mocha-serverless-plugin
?