Closed dpaschal7 closed 3 years ago
I think you may need to import run
like this:
const run = require('server/test/run');
I found this in one of the test files.
Thanks for opening an issue, certainly testing is well under-documented so I'll try to explain the basics in this issue. I would not recommend using run
at all for your own tests; it's here for internal tests and definitely nowhere near stable. Instead, use some 3rd party testing library like supertest
:
// index.js - Main project file
const server = require('server');
const { get } = server.router;
// Notice that we export the server here for testing later on:
module.exports = server(
get('/user', () => ({ name: 'john' }))
);
Your test file (need to npm install supertest jest --save-dev
first):
// index.test.js - API testing file
const request = require('supertest');
// The promise exported from your index
const serverPromise = require('./index.js');
// This will be populated after the server has launched. You can call it
// anything you want; server, runtime, ctx, instance, etc. are all valid names
let server;
describe('user', () => {
// Populate it with the running instance when it's ready
beforeAll(async () => {
server = await serverPromise;
});
// Avoid leaving it hanging after all the tests have run
afterAll(async () => {
await server.close();
});
it('tests the user endpoint', async () => {
await request(server.app)
.get('/user')
.expect('Content-Type', /json/)
.expect('Content-Length', '15')
.expect(200);
});
});
Things become more difficult if you want to require()
it from different files because then it's launched multiple times with the same port (so it'll fail). I recommend a single entry point like the above for testing for the API itself.
I added this code as a working example:
https://github.com/franciscop/server/tree/master/examples/supertest
Improved docs for Cookies as well 😄
https://serverjs.io/documentation/reply/#cookie-
Please let me know if you have any further question/issue, @dpaschal7!
This seems to be fixed, or at least it's been answered. Please feel free to reopen if you still have an issue here or to create a new issue asking more questions. Cheers!
I can't seem to run the cookie test code.
Here's my package.json
I keep getting a ReferenceError for
run
what other dependencies are missing