flash-runner
v0.0.53
Published
Test runner that caches your database connection or any of your expensive computation between tests runs.
Downloads
5
Maintainers
Readme
Readme
Test runner that caches your database connection or any of your expensive computation between tests runs.
Since you can use jest's expect library, i.e, expect. The tests remains same and should work with the change of connectToDb
function to fix the database connection.
Motivation
Jest's test runner has no capability to share values and module between tests suites in watch mode. Issue closed here. But it seems that work is going on this issue here.
Features
- Watch mode + Hot-reloading of server
- No need to stop and restart server when you update
config.fr.js
file - Generate config file via:
npx flash-runner gen
ornpx flash-runner generate
from command line
Usage
Cli
# Installation
npm i flash-runner
# Add below scripts to `package.json` and utilise those script
"scripts": {
"test": "fr test1.test.js",
"test-watch": "fr -w test1.test.js"
},
# -w is alias for --watch
Sample test:
// file: test1.test.js
const {expect} = require('expect')
const {test} = global
// Connect to db if you want
// connectToDb(async () => { })
const sum = (a, b) => {
return a + b
}
test('sum function', async () => {
const received = sum(1, 2)
const expected = 3
expect(received).toBe(expected)
})
NOTE: connectToDb
is intended to make a cache of database connection as you can see the way I have used in many reference projects section.
Running tests:
- watch mode:
npm run test-watch
- run it once (for ci-cd build test pipeline):
npm test
Reference projects that use flash-runner
- nextjs-api-testing-mongoosejs-with-flash
- api-testing-typescript-with-flash
- nextjs-api-testing-with-flash
- Full Project Example: fso-part13
- mongo-driver-with-flash-runner
- express-mongo-with-flash-runner
- sequelize-with-flash-runner
- mongoosejs-with-flash-runner
- LearningRedis
Beginners with testing? Some commonly used assertions
// All below expectation will be PASSED
expect(10).toBe(10)
expect({name: 'dan', age: '22'}).toHaveProperty('name')
expect({name: 'roy', age: 10}).toMatchObject({name: 'roy'})
expect([1, 21, 31]).toContain(1, 21)
Other notes:
- FYI: Always use
express-async-errors
while testing a express app coz it will helps directly toflash-runner
and standaloneserver
running in prevention of crashing (in case of some error thrown). This is helpful inflash-runner
as the server doesn't crash on failure/exception thrown by one route and thus watching service keeps running as well. Yikes!Flash-runner
+express-async-errors
rocks!
Todo
- Implement
test.skip
functionality like jest.
Develop without publishing to npm
# In this directory
npm link
# In target directory where you want to use flash-runner
npm link flash-runner