Bird
Raised Fist0
Cypresstesting~5 mins

Stubbing responses in Cypress - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is stubbing responses in Cypress?
Stubbing responses means replacing real server replies with fake data during tests. It helps test how the app behaves without needing the real server.
Click to reveal answer
beginner
Why use stubbing responses in tests?
To make tests faster, reliable, and independent from real servers. It also helps test edge cases by controlling the response data.
Click to reveal answer
beginner
How do you stub a GET request in Cypress?
Use cy.intercept() with the URL and provide a fake response object. For example: cy.intercept('GET', '/api/data', { fixture: 'data.json' })
Click to reveal answer
intermediate
What is the difference between stubbing and spying in Cypress?
Stubbing changes the response to fake data. Spying only watches the request without changing it.
Click to reveal answer
intermediate
What should you consider when stubbing responses?
Make sure the stub matches the real API shape. Avoid stubbing too much to keep tests realistic. Clean up stubs after tests.
Click to reveal answer
What does cy.intercept() do in Cypress?
AIntercepts and can stub network requests
BRuns the test faster by skipping steps
CGenerates random test data
DClears browser cookies
Why stub responses instead of calling the real server?
ATo avoid testing UI
BTo test without internet connection
CTo make tests slower
DTo make tests unreliable
Which command stubs a POST request in Cypress?
Acy.intercept('POST', '/api/save', { statusCode: 200 })
Bcy.visit('/api/save')
Ccy.stub('POST', '/api/save')
Dcy.spy('POST', '/api/save')
What is a fixture in Cypress stubbing?
AA CSS style
BA browser plugin
CA test runner
DA file with fake data used to stub responses
What happens if you don’t stub a failing server response?
ATest will skip network calls
BTest will always pass
CTest may fail unpredictably
DTest will run faster
Explain how to stub a network response in Cypress and why it is useful.
Think about replacing real server replies with your own data.
You got /4 concepts.
    Describe the difference between spying and stubbing in Cypress testing.
    One observes, the other replaces.
    You got /3 concepts.

      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