8

I am implementing jest to test my React app and have set up a simple test on a utility function I have, but I am getting the error:

Error: Your test suite must contain at least one test.

Have checked my implementation, and I think all is correct - could someone take a look got me?

The file structure for the test and the function is as follows

- __tests__
  -- sumObjectValues-test.js
- utils
  -- sumObjectValues.js

sumObjectValues.js is as follows:

const sumObjectValues = (obj, identifier) => {
    return obj
        .map((el) => { return el[identifier]; })
        .reduce((prev, next) => { return prev += next; }, 0);
}

export default sumObjectValues;

And sumObjectValues-test.js:

   const obj = [
    {
        "id": 0,
        "item": "Tesla Model S",
        "amount": 85000
    },
    {
        "id": 1,
        "item": "iPhone 6S",
        "amount": 600
    },
    {
        "id": 2,
        "item": "MacBook Pro",
        "amount": 1700
    }
];

const identifier = "amount";


jest.unmock('../client/utils/sumObjectValues'); // unmock to use the actual implementation of `sumObjectValues`

describe('sumObjectValues', () => {
    if('takes an array of objects, each with amount values, & sums the values', () => {
        const sumObjectValues = require('../client/utils/sumObjectValues');
        expect(sumObjectValues(obj, identifier)).toBe(87300);
    });
});

Then I have "test": "jest" in my package.json scripts, but get the following error:

FAIL  __tests__/sumObjectValues-test.js (0s) ● Runtime Error
  - Error: Your test suite must contain at least one test.
       at onTestResult (node_modules/jest-cli/build/TestRunner.js:143:18) 1 test suite
failed, 0 tests passed (0 total in 1 test suite, run time 13.17s) npm
ERR! Test failed.  See above for more details.

Thanks all :)

N.B.: Was a typo in the it, but after fixing I am getting a new error:

FAIL __tests__/sumObjectValues-test.js (321.763s) ● sumObjectValues ›
it takes an array of objects, each with amount values, & sums the
values - TypeError: sumObjectValues is not a function at
Object. (__tests__/sumObjectValues-test.js:27:10) 1 test
failed, 0 tests passed (1 total in 1 test suite, run time 344.008s)
npm ERR! Test failed. See above for more details.
Paul T. Rawkeen
  • 3,994
  • 3
  • 35
  • 51
zeKoko
  • 437
  • 1
  • 7
  • 19
  • I'm pretty sure [Node.js doesn't support ES2015 modules](http://es2015-node.js.org/) (yet). Try changing `export default sumObjectValues` to `module.exports = sumObjectValues`. – Mike Cluck Aug 24 '16 at 20:30
  • 1
    Ahh, of course, I can add the babel jest module to try to sort that, will give it a go! Thank you :) – zeKoko Aug 24 '16 at 20:31
  • Ah man, this is painful.. I think I need to go sleep. It has run now I have installed babel-jest, but I am getting a new error: FAIL __tests__/sumObjectValues-test.js (321.763s) ● sumObjectValues › it takes an array of objects, each with amount values, & sums the values - TypeError: sumObjectValues is not a function at Object. (__tests__/sumObjectValues-test.js:27:10) 1 test failed, 0 tests passed (1 total in 1 test suite, run time 344.008s) npm ERR! Test failed. See above for more details. – zeKoko Aug 24 '16 at 21:14
  • I'm just spitballing since I haven't used ES2015 modules in Node yet but have you tried using the [`import` syntax](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import) instead of `require`? – Mike Cluck Aug 24 '16 at 21:51
  • 1
    Yes! You beauty! Thanks Mike, that was it, appreciate the help :) – zeKoko Aug 24 '16 at 22:07
  • Lol! Glad I could help. – Mike Cluck Aug 24 '16 at 22:07

2 Answers2

4
if('takes an array of objects, each with amount values, & sums the values', () => {

should be

it('takes an array of objects, each with amount values, & sums the values', () => {
Adrian Miranda
  • 315
  • 3
  • 9
2

If you think to write tests later, You can just ignore them with this

test.skip('skip', () => {});
Nalan Madheswaran
  • 10,136
  • 1
  • 57
  • 42