serverless-testing-library
makes it easier to write integration and smoke tests for your serverless APIs.
A simple request.
const test = require(‘serverless-testing-library’);
it(‘gets a 200 response’, async () => {
const app = test()
const response = await app.get('/')
assert.equal(response.status, 200)
assert.equal(response.body.foo, 'bar')
})
Here, we import the top-level function test
from serverless-testing-library
and call it. This method reads the serverless configuration file in the root of your project and configures a simple express server wrapped in some convenient testing methods. We then call the get
method, passing it a URL path that exists on our API. The response
object returned from get
contains the HTTP status code and parsed header and body objects.
serverless-testing-library
supports the 5 major HTTP methods: GET
, DELETE
, PATCH
, POST
and PUT
. Each method called on the app
instance returns a Promise to be handled in your tests.
The test
method optionally accepts a serverless configuration file path:
const app = test('my_api.yml') // resolves <project_root>/my_api.yml
const app = test('foo/api.yml') // resolves <project_root>/foo/api.yml
If you are testing a project that lives outside of your project root, resolve the path to the serverless configuration file:
const path = require('path')
const test = require('serverless-testing-library')
const filePath = path.resolve(process.cwd(), '../other-project/serverless.yml')
const app = test(filePath)
You can find the complete API documentation here.
For those using mocha and chai to test their API's, serverless-testing-library
ships with a simple set of chai assertions.
const chai = require('chai')
const stlChai = require('serverless-testing-library/chai')
chai.use(stlChai)
You can then use the assertions like so:
expect(response).to.have.status(200)
expect(response).to.have.header('x-api-key')
expect(response).to.be.json
Jest users are not left out: serverless-testing-library
also ships with the same matchers for jest.
// test.setup.js
require('serverless-testing-library/jest')
Then configure jest to use the above setup script in either the jest
key of package.json
or jest.config.js
:
// package.json
"jest": {
"setupTestFrameworkScriptFile": "./test.setup.js"
}
Then use it in your test:
expect(response).toHaveStatus(200)
expect(response).toHaveHeader('x-api-key')
expect(response).toBeJson()
serverless-testing-library
is heavily inspired by chai-http. The name for this library was inspired by react-testing-library.
See LICENSE