Bird
Raised Fist0
Expressframework~5 mins

Testing GET endpoints in Express - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of testing GET endpoints in Express?
Testing GET endpoints ensures that the server correctly responds to client requests by returning the expected data and status codes.
Click to reveal answer
beginner
Which tool is commonly used to test Express GET endpoints in JavaScript?
Supertest is commonly used to test Express GET endpoints because it allows sending HTTP requests and checking responses easily.
Click to reveal answer
beginner
What does the status code 200 mean in a GET endpoint test?
Status code 200 means the GET request was successful and the server returned the requested data.
Click to reveal answer
intermediate
How do you check the response body in a GET endpoint test using Supertest?
You use the .expect() method with a function or value to verify the response body matches what you expect.
Click to reveal answer
intermediate
Why is it important to test edge cases in GET endpoints?
Testing edge cases ensures the endpoint handles unexpected or unusual requests gracefully without crashing or returning wrong data.
Click to reveal answer
Which HTTP method is used to retrieve data from a server?
APOST
BDELETE
CPUT
DGET
What library helps test Express endpoints by simulating HTTP requests?
AMocha
BSupertest
CChai
DJest
In a test, what does checking for status code 404 mean?
AResource was not found
BRequest was successful
CServer error occurred
DRequest was redirected
Which method in Supertest is used to verify the response status code?
A.expect()
B.post()
C.get()
D.send()
Why should you test GET endpoints with invalid parameters?
ATo increase code size
BTo check server speed
CTo ensure proper error handling
DTo avoid writing tests
Explain how to write a simple test for an Express GET endpoint using Supertest.
Think about sending a GET request and checking the response.
You got /5 concepts.
    Describe why testing GET endpoints is important in web development.
    Consider what happens if the endpoint breaks or returns wrong data.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of testing GET endpoints in an Express app?
      easy
      A. To verify the server returns the correct data and status code
      B. To check if the server can handle POST requests
      C. To test database connection speed
      D. To validate CSS styles on the page

      Solution

      1. Step 1: Understand GET endpoint testing

        Testing GET endpoints means checking if the server responds correctly when a client asks for data.
      2. Step 2: Identify the goal of testing

        The goal is to confirm the server sends the right data and proper HTTP status code (like 200 for success).
      3. Final Answer:

        To verify the server returns the correct data and status code -> Option A
      4. Quick Check:

        Testing GET endpoints = verify data and status [OK]
      Hint: GET endpoint tests check response data and status code [OK]
      Common Mistakes:
      • Confusing GET with POST request testing
      • Testing unrelated features like CSS or database speed
      • Ignoring status codes in tests
      2. Which of the following is the correct way to start a test for a GET endpoint using supertest with Express?
      easy
      A. app.get('/path').send(200);
      B. request(app).get('/path').expect(200, done);
      C. supertest.get('/path').expect(200);
      D. request.get(app, '/path').expect(200);

      Solution

      1. Step 1: Recall supertest syntax

        Supertest uses request(app).get('/path') to simulate a GET request to the Express app.
      2. Step 2: Check the correct chaining

        Chaining .expect(200, done) checks the status code and signals test completion.
      3. Final Answer:

        request(app).get('/path').expect(200, done); -> Option B
      4. Quick Check:

        supertest GET syntax = request(app).get(path).expect(status) [OK]
      Hint: Use request(app).get(path).expect(status, done) for GET tests [OK]
      Common Mistakes:
      • Calling app.get() instead of request(app).get()
      • Missing the done callback in async tests
      • Incorrect method chaining order
      3. Given this Express GET endpoint and test code, what will the test output?
      const express = require('express');
      const app = express();
      app.get('/hello', (req, res) => res.json({ message: 'Hi!' }));
      
      const request = require('supertest');
      
      test('GET /hello returns message', async () => {
        const response = await request(app).get('/hello');
        return response.body.message;
      });
      medium
      A. "Hi!"
      B. undefined
      C. Error: No response
      D. "hello"

      Solution

      1. Step 1: Analyze the endpoint response

        The GET /hello endpoint sends JSON { message: 'Hi!' } as response.
      2. Step 2: Check the test return value

        The test awaits the GET request and returns response.body.message, which is 'Hi!'.
      3. Final Answer:

        "Hi!" -> Option A
      4. Quick Check:

        GET /hello returns message = "Hi!" [OK]
      Hint: Response body message matches endpoint JSON key [OK]
      Common Mistakes:
      • Expecting response.body instead of response.body.message
      • Forgetting to await the request
      • Assuming string 'hello' instead of 'Hi!'
      4. Identify the error in this test code for an Express GET endpoint:
      const request = require('supertest');
      const app = require('./app');
      
      test('GET /users returns 200', () => {
        request(app)
          .get('/users')
          .expect(200);
      });
      medium
      A. Missing import of Express
      B. Incorrect HTTP method used
      C. Missing return or await to handle async test
      D. Wrong path '/users' does not exist

      Solution

      1. Step 1: Check async test handling

        The test function is async but does not return or await the request promise, so Jest won't wait for it.
      2. Step 2: Confirm correct fix

        Adding return before request(...) or making the test async and awaiting fixes the issue.
      3. Final Answer:

        Missing return or await to handle async test -> Option C
      4. Quick Check:

        Async test needs return or await [OK]
      Hint: Always return or await supertest calls in tests [OK]
      Common Mistakes:
      • Not returning or awaiting async calls in tests
      • Assuming path or method is wrong without checking
      • Confusing import errors with test async errors
      5. You want to test an Express GET endpoint that returns a list of users, but only those with active status true. Which test code correctly checks this filtering?
      app.get('/active-users', (req, res) => {
        const users = [
          { id: 1, active: true },
          { id: 2, active: false },
          { id: 3, active: true }
        ];
        res.json(users.filter(u => u.active));
      });
      
      // Test code options:
      A) await request(app).get('/active-users').expect(200).expect(res => {
        if (!res.body.every(u => u.active)) throw new Error('Inactive user found');
      });
      
      B) await request(app).get('/active-users').expect(200).expect(res => {
        if (res.body.length !== 3) throw new Error('Wrong number of users');
      });
      
      C) await request(app).get('/active-users').expect(404);
      
      D) await request(app).get('/active-users').expect(200).expect(res => {
        if (!res.body.some(u => u.active === false)) throw new Error('Inactive user found');
      });
      hard
      A. Incorrectly throws error when no inactive users found
      B. Incorrectly expects all users, including inactive
      C. Wrong status code expectation
      D. Checks for inactive users but throws error if found

      Solution

      1. Step 1: Understand endpoint filtering

        The endpoint returns only users with active: true, so no inactive users should appear.
      2. Step 2: Analyze test options

        Checks for inactive users but throws error if found uses every(u => u.active) and throws if any inactive, correctly verifying the filter.
        Incorrectly expects all users, including inactive expects length !== 3 (wrong, it's 2).
        Wrong status code expectation expects 404 (wrong).
        Incorrectly throws error when no inactive users found incorrectly throws error when no inactive users found.
      3. Step 3: Verify A logic

        !every(u => u.active) detects any inactive user, matching the requirement.
      4. Final Answer:

        Checks for inactive users but throws error if found -> Option D
      5. Quick Check:

        Test filters out inactive users = no inactive found [OK]
      Hint: Check response has no inactive users with some() or every() [OK]
      Common Mistakes:
      • Expecting all users instead of filtered active only
      • Using wrong status code in test
      • Confusing every() and some() logic in tests
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard