express api for test with jest

61 Views Asked by At

How to write rest api with express for checking js code with jest?

import shell from 'shelljs'
import path from 'path'

export const checkTask = (req, res) => {
    shell.touch('./task.test.js')
    shell.ShellString(`const getSum = (a, b) => a + b\ntest('sum of 4 and 5 expected to be 9', () => { const data = getSum(4, 5); expect(data).toBe(9); })`).to('./task.test.js')
    shell.exec('npm run test')

    res.status(200).json({
        'ok': true
    })
}

It doesn't return anything, it just creates test file but doesn't run jest so i can't get results. No error messages in terminal

if i run separately like below it works

export const checkTask = (req, res) => {
    shell.touch('./task.test.js')
    shell.ShellString(`const getSum = (a, b) => a + b\ntest('sum of 4 and 5 expected to be 9', () => { const data = getSum(4, 5); expect(data).toBe(9); })`).to('./task.test.js')

    res.status(200).json({
        'ok': true
    })
}

or like this with already created test file it also works

export const checkTask = (req, res) => {
    shell.exec('npm run test')

    res.status(200).json({
        'ok': true
    })
}
1

There are 1 best solutions below

0
Bekbolsun Tuuganbekov On BEST ANSWER

I solved this problem with shelljs

shell.touch(path)        
shell.ShellString(`${req.body.solution}\n${req.body.tests}`).to('./task.test.js')
var child = shell.exec('npm run test', {async: true, silent: true})
child.stdout.on('data', () => { })