Bird
Raised Fist0
Cypresstesting~10 mins

Stubbing responses in Cypress - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to stub a GET request to '/api/data' with a 200 status.

Cypress
cy.intercept('GET', '/api/data', { statusCode: [1] }).as('getData')
Drag options to blanks, or click blank then click option'
A200
B404
C500
D201
Attempts:
3 left
💡 Hint
Common Mistakes
Using 404 or 500 which simulate errors instead of success.
2fill in blank
medium

Complete the code to stub a POST request to '/api/login' and return a JSON object with a token.

Cypress
cy.intercept('POST', '/api/login', { body: [1] }).as('postLogin')
Drag options to blanks, or click blank then click option'
A{ token: 'abc123' }
B{ error: 'fail' }
C{ status: 401 }
D{ message: 'success' }
Attempts:
3 left
💡 Hint
Common Mistakes
Returning error or status codes instead of a token object.
3fill in blank
hard

Fix the error in the code to stub a GET request to '/api/items' and delay the response by 500ms.

Cypress
cy.intercept('GET', '/api/items', { [1]: 500 }).as('getItems')
Drag options to blanks, or click blank then click option'
Apause
Bdelay
Ctimeout
Dwait
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'timeout', 'wait', or 'pause' which are not valid properties here.
4fill in blank
hard

Fill both blanks to stub a PUT request to '/api/user' returning a 204 status and no body.

Cypress
cy.intercept('PUT', '/api/user', { statusCode: [1], body: [2] }).as('putUser')
Drag options to blanks, or click blank then click option'
A204
Bnull
C{}
D200
Attempts:
3 left
💡 Hint
Common Mistakes
Using 200 status with empty object body which implies content.
5fill in blank
hard

Fill all three blanks to stub a DELETE request to '/api/item/123' that returns a 200 status, a JSON message, and delays response by 300ms.

Cypress
cy.intercept('DELETE', '/api/item/123', { statusCode: [1], body: [2], [3]: 300 }).as('deleteItem')
Drag options to blanks, or click blank then click option'
A200
B{ message: 'Deleted successfully' }
Cdelay
DstatusCode
Attempts:
3 left
💡 Hint
Common Mistakes
Confusing property names and values in blanks.
Using wrong status codes or missing delay property.

Practice

(1/5)
1. What is the main purpose of stubbing responses in Cypress testing?
easy
A. To fake server responses so tests run without a real backend
B. To speed up the browser rendering process
C. To automatically generate test data
D. To record user interactions for playback

Solution

  1. Step 1: Understand stubbing concept

    Stubbing means faking server responses so the app can be tested without a real backend.
  2. Step 2: Identify purpose in Cypress

    Cypress uses stubbing to isolate frontend tests from backend dependencies, making tests faster and more reliable.
  3. Final Answer:

    To fake server responses so tests run without a real backend -> Option A
  4. Quick Check:

    Stubbing = Fake server response [OK]
Hint: Stubbing fakes backend responses for isolated frontend tests [OK]
Common Mistakes:
  • Thinking stubbing speeds up browser rendering
  • Confusing stubbing with test data generation
  • Believing stubbing records user actions
2. Which of the following is the correct syntax to stub a GET request to '/api/data' with Cypress?
easy
A. cy.stub('GET', '/api/data', { fixture: 'data.json' })
B. cy.route('GET', '/api/data', { fixture: 'data.json' })
C. cy.intercept('GET', '/api/data', { fixture: 'data.json' })
D. cy.mock('GET', '/api/data', { fixture: 'data.json' })

Solution

  1. Step 1: Identify correct Cypress command

    The current Cypress command to stub network requests is cy.intercept().
  2. Step 2: Check method and parameters

    Using cy.intercept('GET', '/api/data', { fixture: 'data.json' }) correctly stubs a GET request with a fixture response.
  3. Final Answer:

    cy.intercept('GET', '/api/data', { fixture: 'data.json' }) -> Option C
  4. Quick Check:

    Use cy.intercept for stubbing requests [OK]
Hint: Use cy.intercept for stubbing, not cy.stub or cy.route [OK]
Common Mistakes:
  • Using cy.stub instead of cy.intercept
  • Using deprecated cy.route command
  • Using cy.mock which does not exist in Cypress
3. Given the code below, what will be the output of the test assertion?
cy.intercept('GET', '/users', { body: [{ id: 1, name: 'Alice' }] }).as('getUsers');
cy.visit('/users');
cy.wait('@getUsers').its('response.body[0].name').should('equal', 'Alice');
medium
A. Test passes because the stubbed response matches 'Alice'
B. Test fails because the alias '@getUsers' is not defined
C. Test fails because the response body is empty
D. Test throws a syntax error due to incorrect intercept usage

Solution

  1. Step 1: Analyze the intercept stub

    The intercept stubs a GET request to '/users' with a response body containing one user named 'Alice'.
  2. Step 2: Check the wait and assertion

    The test waits for '@getUsers' and asserts the first user's name equals 'Alice', which matches the stub.
  3. Final Answer:

    Test passes because the stubbed response matches 'Alice' -> Option A
  4. Quick Check:

    Stub response matches assertion = pass [OK]
Hint: Alias stub and assert matching response for pass [OK]
Common Mistakes:
  • Assuming alias is undefined without .as()
  • Thinking response body is empty
  • Confusing syntax of cy.intercept
4. Identify the error in the following Cypress stub code:
cy.intercept('POST', '/login', { statusCode: 200, body: { token: 'abc123' } });
cy.visit('/login');
cy.wait('@loginRequest');
medium
A. cy.visit must come before cy.intercept
B. The HTTP method 'POST' is invalid in cy.intercept
C. The response body must be a string, not an object
D. The alias '@loginRequest' is missing because the intercept was not aliased

Solution

  1. Step 1: Check alias usage

    The intercept is defined but not given an alias using .as(), so '@loginRequest' does not exist.
  2. Step 2: Understand wait on alias

    Waiting on '@loginRequest' fails because the alias was never created.
  3. Final Answer:

    The alias '@loginRequest' is missing because the intercept was not aliased -> Option D
  4. Quick Check:

    Alias missing causes wait failure [OK]
Hint: Always alias intercept with .as() before waiting [OK]
Common Mistakes:
  • Forgetting to add .as() to intercept
  • Thinking POST is invalid method
  • Believing response body must be string
5. You want to stub a GET request to '/products' that returns different responses based on a query parameter 'category'. Which is the best way to implement this in Cypress?
hard
A. Create multiple cy.intercept calls with the same URL but different responses
B. Use cy.intercept with a function handler to check req.query.category and send different responses
C. Use cy.intercept with a static response ignoring query parameters
D. Use cy.route with a fixture file for all categories

Solution

  1. Step 1: Understand dynamic stubbing need

    Different responses based on query parameters require conditional logic in the stub.
  2. Step 2: Use function handler in cy.intercept

    cy.intercept supports a function to inspect the request and send custom responses based on req.query.category.
  3. Final Answer:

    Use cy.intercept with a function handler to check req.query.category and send different responses -> Option B
  4. Quick Check:

    Function handler enables dynamic stubbing [OK]
Hint: Use function in cy.intercept for dynamic responses [OK]
Common Mistakes:
  • Trying multiple intercepts with same URL (only last applies)
  • Ignoring query parameters in stub
  • Using deprecated cy.route instead of cy.intercept
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