vercel-node-server

Create a server for your Vercel Node lambdas in order to test them

Usage no npm install needed!

<script type="module">
  import vercelNodeServer from 'https://cdn.skypack.dev/vercel-node-server';
</script>

README

vercel-node-server

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 MIT License Travis Codecov

Installation

npm install vercel-node-server

Supported API

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.

Unit testing your lambdas

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');
});

Running a local server

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%