简体   繁体   中英

Testing code with node in collaboration with Git/GitHub

I recently finished a coding test which requires me to make sure all of my code is passing using node (npm test). Out of nine tests, I fail them all, even though I have tested my code with success in my own environment. For each problem, the test says my code returns "undefined," which I think might be more of a git/github confusion problem than incorrect code. I took a whole course on git/github and still can't find the problem!

I have done all the steps outlined in the test directions (up to step 5 because I cannot pass their tests!): https://github.com/LambdaSchool/Lambda-Challenge

Here is my code:

/*
Work through the problems in this file.  As you work through each 
problem periodically run: npm test
Your function name and the string must match the instructions exactly 
otherwise the tests will fail.
After writing your function uncomment the matching function reference 
at the bottom of the file.
*/

/* 1. Write a function called helloWorld that returns the string 
'Hello World!'. */

function helloWorld() {
 return 'Hello World!';
}


/*
2. Write a function called lambdaSchool that has a single parameter 
called num.
 num will be a positive integer.
 If num is divisible by 3 return the string 'Lambda'
 If num is divisible by 5 return the string 'School'
 If num is divisible by 3 AND 5 return the string 'Lambda School' (notice the space)
 If num is NOT divisible by 3 or 5 then return num.
 Example:
         lambdaSchool(15); // returns 'Lambda School'
         lambdaSchool(8); // returns 8
*/

function lambdaSchool(num) {
if (num % 5 === 0 && num % 3 === 0) {
 return "Lambda School";
} else if (num % 5 === 0) {
 return "School";
} else if (num % 3 === 0) {
 return "Lambda";
} else {
 return num;
}
}

/*
3. Write a function called longestString that has a single parameter 
called strs.
 strs will be an array of strings.
 Return the longest string that is in strs.
 If there is a tie for the longest string then return the one that 
occurs first.
 Example:
         longestString(['hi', 'hello', 'ni hao', 'guten tag']); // 
 returns 'guten tag'
         longestString(['JavaScript', 'HTML', 'CSS']); // returns 
 'JavaScript'
 */
var longest = '';
function longestString(strs) {
 for (i = 0; i < strs.length; i++) {
      if (strs[i].length > longest.length) {
           longest = strs[i];
      }
 }
 return longest;
 }

 /*
 4. Write a function called computeUserAverageAge that has a single 
 parameter called users
 users is an array of user objects.
 Each user object has a property called age that is a number.
 Compute the average age of all user objects in the users array.
 Round off the decimals if needed and return the number.
 Example:
         const users = [{
           name: 'Brendan Eich',
           age: 56,
         }, {
           name: 'Linus Torvalds',
           age: 48,
         }, {
           name: 'Margaret Hamilton',
           age: 81,
         }];
         computeUserAverageAge(users); // returns 62 (This number is 
 rounded up from 61.6666)
 */
 function computeUserAverageAge(users) {
 return Math.round(users.reduce((acc, obj) => acc + obj.age, 0) / 
 users.length);
 };

module.exports = {
helloWorld,
lambdaSchool,
longestString,
computeUserAverageAge
};

and here is the node test (npm test) results:

FAIL  ./assessment.test.js
Lambda School Precourse Assessment
helloWorld
  ✕ should return a string (10ms)
  ✕ should return the string 'Hello World!' (1ms)
lambdaSchool
  ✕ should return 'Lambda' for a number divisible by 3
  ✕ should return 'School' for a number divisible by 5 (1ms)
  ✕ should return 'Lambda School' for a number divisible by 3 and 5
longestString
  ✕ should return the longest string in the array
  ✕ should return the first longest string if there is a tie (1ms)
computeUserAverageAge
  ✕ should return the average age of the users
  ✕ should round the average before returning it (1ms)

    ● Lambda School Precourse Assessment › helloWorld › should return 
   a 
   string

expect(received).toBe(expected) // Object.is equality

Expected value to be:
  "string"
Received:
  "undefined"

   9 |   describe('helloWorld', () => {
  10 |     it('should return a string', () => {
> 11 |       expect(typeof helloWorld()).toBe('string');
  12 |     });
  13 |     it('should return the string \'Hello World!\'', () => {
  14 |       expect(helloWorld()).toBe('Hello World!');

  at Object.it (assessment.test.js:11:35)

    ● Lambda School Precourse Assessment › helloWorld › should return 
     the 
   string 'Hello World!'

expect(received).toBe(expected) // Object.is equality

Expected value to be:
  "Hello World!"
Received:
  undefined

Difference:

  Comparing two different types of values. Expected string but received undefined.

  12 |     });
  13 |     it('should return the string \'Hello World!\'', () => {
> 14 |       expect(helloWorld()).toBe('Hello World!');
  15 |     });
  16 |   }); 
  17 | 

  at Object.it (assessment.test.js:14:28)

    ● Lambda School Precourse Assessment › lambdaSchool › should 
  return 'Lambda' for a number divisible by 3

expect(received).toBe(expected) // Object.is equality

Expected value to be:
  "Lambda"
Received:
  undefined

 Difference:

  Comparing two different types of values. Expected string but 
 received undefined.

  18 |   describe('lambdaSchool', () => {
  19 |     it('should return \'Lambda\' for a number divisible by 3', 
() => {
> 20 |       expect(lambdaSchool(12)).toBe('Lambda');
  21 |       expect(lambdaSchool(63)).toBe('Lambda');
  22 |       expect(lambdaSchool(999)).toBe('Lambda');
  23 |     });

  at Object.it (assessment.test.js:20:32)

        ● Lambda School Precourse Assessment › lambdaSchool › should 
      return 
     'School' for a number divisible by 5

expect(received).toBe(expected) // Object.is equality

Expected value to be:
  "School"
Received:
  undefined

Difference:

  Comparing two different types of values. Expected string but 
 received undefined.

  23 |     });
  24 |     it('should return \'School\' for a number divisible by 5', 
() => {
> 25 |       expect(lambdaSchool(10)).toBe('School');
  26 |       expect(lambdaSchool(155)).toBe('School');
  27 |       expect(lambdaSchool(1000)).toBe('School');
  28 |     });

  at Object.it (assessment.test.js:25:32)

     ● Lambda School Precourse Assessment › lambdaSchool › should 
     return 
   'Lambda School' for a number divisible by 3 and 5

expect(received).toBe(expected) // Object.is equality

Expected value to be:
  "Lambda School"
Received:
  undefined

Difference:

  Comparing two different types of values. Expected string but 
received undefined.

  28 |     });
  29 |     it('should return \'Lambda School\' for a number divisible 
by 3 and 5', () => {
> 30 |       expect(lambdaSchool(15)).toBe('Lambda School');
  31 |       expect(lambdaSchool(30)).toBe('Lambda School');
  32 |       expect(lambdaSchool(180)).toBe('Lambda School');
  33 |     });

  at Object.it (assessment.test.js:30:32)

● Lambda School Precourse Assessment › longestString › should return 
the 
longest string in the array

expect(received).toBe(expected) // Object.is equality

Expected value to be:
  "function"
Received:
  undefined

Difference:

  Comparing two different types of values. Expected string but 
received undefined.

  36 |   describe('longestString', () => {
  37 |     it('should return the longest string in the array', () => {
> 38 |       expect(longestString(['array', 'object', 
'function'])).toBe('function');
  39 |       expect(longestString(['C++', 'JavaScript', 
'Python'])).toBe('JavaScript');
  40 |     });
  41 |     it('should return the first longest string if there is a 
tie', () => {

  at Object.it (assessment.test.js:38:62)

  ● Lambda School Precourse Assessment › longestString › should return 
  the 
  first longest string if there is a tie

expect(received).toBe(expected) // Object.is equality

Expected value to be:
  "C++"
Received:
  undefined

Difference:

  Comparing two different types of values. Expected string but 
received undefined.

  40 |     });
  41 |     it('should return the first longest string if there is a 
tie', () => {
> 42 |       expect(longestString(['C++', 'CSS', 'JWT'])).toBe('C++');
  43 |     });
  44 |   }); 
  45 | 

  at Object.it (assessment.test.js:42:52)

 ● Lambda School Precourse Assessment › computeUserAverageAge › should 
 return the average age of the users

expect(received).toBe(expected) // Object.is equality

Expected value to be:
  62
Received:
  undefined

Difference:

  Comparing two different types of values. Expected number but 
  received undefined.

  66 |     }];
  67 |     it('should return the average age of the users', () => {
> 68 |       expect(computeUserAverageAge(authors)).toBe(62);
  69 |     });
  70 |     it('should round the average before returning it', () => {
  71 |       
expect(computeUserAverageAge(computerScientists)).toBe(62);

  at Object.it (assessment.test.js:68:46)

● Lambda School Precourse Assessment › computeUserAverageAge › should 
round the average before returning it

expect(received).toBe(expected) // Object.is equality

Expected value to be:
  62
Received:
  undefined

Difference:

  Comparing two different types of values. Expected number but 
  received undefined.

  69 |     });
  70 |     it('should round the average before returning it', () => {
> 71 |       
expect(computeUserAverageAge(computerScientists)).toBe(62);
  72 |     });
  73 |   });
  74 | });

  at Object.it (assessment.test.js:71:57)

Test Suites: 1 failed, 1 total
Tests:       9 failed, 9 total
Snapshots:   0 total
Time:        0.613s, estimated 1s
Ran all test suites matching /assessment.test.js/i.
npm ERR! Test failed.  See above for more details.

I am beyond words thankful for your time and patience!

After you made your edits, did you save your code? If you, type the following git commit -a -m 'My changes to the code'. Then git push.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM