An unofficial package allowing you to create Node http.Server
instances of your Vercel Node lambdas.
Enables you to write unit/integration tests for your lambdas, or to perform manual testing against a local server instance.
npm install vercel-node-server
This package has taken the code from the official @vercel/node
builder in order to ensure maximum API compatibility. As far as I am aware we have 100% API coverage.
In the below example we will make use of a local server in order to perform an integration test against our lambda.
We will be making use of the test-listen
package, which accepts a http.Server
instance and will return a unique URL based on an available port.
We will also make use of axios
in order to make the request against our lambda.
import { createServer } from 'vercel-node-server';
import listen from 'test-listen';
import axios from 'axios';
import helloLambda from './api/hello';
let server;
let url;
beforeAll(async () => {
server = createServer(routeUnderTest);
url = await listen(server);
});
afterAll(() => {
server.close();
});
it('should return the expected response', async () => {
const response = await axios.get(url, { params: { name: 'Pearl' } });
expect(response.data).toBe('Hello Pearl');
});
Given the following lambda.
const helloLambda = (req, res) => {
res.send(`Hello ${req.query.name}`);
};
You can create a Node http.Server
instance like so.
import { createServer } from 'vercel-node-server';
import helloLambda from './api/hello';
const server = createServer(helloLambda);
// start listening on port 8000
server.listen(8000);
Then you can then make requests against it.
> curl http://localhost:8000?name=Pearl
Hello Pearl%