3
06/11/2024 6:26 pm
Topic starter
Write Mocha tests to check the functionality of the following JS code:
function sum(arr) { let sum = 0; for (let i of arr) { sum += Number(i); } return sum; } console.log(sum([3, 4, 5, 6, 7]));
Your tests will be supplied a function named 'sum'. It needs to meet the following requirements:
- Takes and array of numbers as argument
- Returns the sum of the values of all elements inside the array
1 Answer
2
06/11/2024 6:31 pm
Here is my solution:
let sum = require('../P04 SumOfNumbers').sum; let expect = require("chai").expect; describe('Sum of Numbers tests', () => { describe('General tests', () => { it('should be a function', () => { expect(typeof sum).to.equal('function'); }); }); describe('Function tests', () => { it('should return zero for a zero length input array', () => { expect(sum([])).to.equal(0); }); it('should return the member value for a one member array', () => { expect(sum([1])).to.equal(1); }); it('should return the member value for a one member array when given as string', () => { expect(sum(['1'])).to.equal(1); }); it('should add whole number arrays', () => { expect(sum([1,2,3])).to.equal(6); }); it('should add whole number arrays including negative numbers', () => { expect(sum([-1,2,3])).to.equal(4); }); it('should add whole number arrays including strings', () => { expect(sum([-1,'2',3])).to.equal(4); }); it('should add fractions', () => { expect(sum([1.1,2.2,3])).to.be.closeTo(6.3,0.0001); }); //it('should not add non-arrays', () => { // expect(sum(1,2,3)).to.be.NaN; //}); it('should not add arrays of invalid data', () => { expect(sum(['pesho','gosho'])).to.be.NaN; }); }); });