Я создаю приложение API на NodeJS, используя бессерверную структуру. Я установил 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
endpoint я (пока) провожу очень похожий тест:
'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
?