zeit-now-node-server
v1.0.1
Published
Create a server for your Zeit @now/node lambdas in order to test them
Downloads
4
Readme
zeit-now-node-server
An unofficial package allowing you to create Node http.Server
instances of your Zeit @now/node
lambdas.
Enables you to write unit/integration tests for your lambdas, or to perform manual testing against a local server instance.
Installation
npm install zeit-now-node-server
Supported API
This package has taken the code from the official @now/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 'zeit-now-node-server';
import listen from 'test-listen';
import axios from 'axios';
import helloLambda from './api/hello';
let server;
let url;
beforeAll(() => {
server = createServer(routeUnderTest);
url = await listen(server);
});
afterAll(() => {
server.close();
});
it('should return the expected response' async () => {
const response = await axios.get(url);
expect(response.data).toBe('Hello world');
});
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 'zeit-node-now-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%