Bird
Raised Fist0
NestJSframework~5 mins

Integration testing in NestJS - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is integration testing in NestJS?
Integration testing in NestJS checks how different parts of the application work together, like controllers, services, and modules, to ensure they interact correctly.
Click to reveal answer
beginner
Which NestJS testing utility helps create a testing module for integration tests?
The Test.createTestingModule() method helps build a testing module that mimics the real module setup for integration testing.
Click to reveal answer
intermediate
Why do we use beforeEach or beforeAll hooks in NestJS integration tests?
These hooks set up the testing environment before each or all tests run, like creating the testing module and initializing the app instance.
Click to reveal answer
intermediate
How do you test HTTP endpoints in NestJS integration tests?
You use the supertest library to send HTTP requests to the NestJS app instance and check the responses to verify endpoint behavior.
Click to reveal answer
beginner
What is the difference between unit testing and integration testing in NestJS?
Unit testing checks individual parts in isolation, while integration testing checks how multiple parts work together in the app.
Click to reveal answer
Which method creates a testing module in NestJS integration tests?
AModule.forRoot()
BTest.createTestingModule()
CNestFactory.create()
DAppModule.init()
What library is commonly used to test HTTP requests in NestJS integration tests?
Arequest-promise
Baxios
Cjest-fetch-mock
Dsupertest
In NestJS, where do you usually initialize the app instance for integration testing?
AInside the controller constructor
BInside the main.ts file
CInside beforeEach or beforeAll hooks
DInside the service provider
Integration testing in NestJS mainly focuses on:
ATesting how modules and services work together
BTesting database schema only
CTesting UI components
DTesting individual functions only
Which of these is NOT a typical step in NestJS integration testing setup?
ADirectly modifying production database
BCreating a testing module
CUsing supertest to send HTTP requests
DInitializing the Nest app instance
Explain how to set up a basic integration test in NestJS for an HTTP endpoint.
Think about how you prepare the app and send requests to test endpoints.
You got /4 concepts.
    Describe the main difference between unit testing and integration testing in NestJS.
    Focus on scope and interaction of tested parts.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of integration testing in NestJS?
      easy
      A. To test individual functions in isolation
      B. To check how different parts of the application work together
      C. To measure application performance under load
      D. To check the syntax of TypeScript code

      Solution

      1. Step 1: Understand integration testing goal

        Integration testing focuses on verifying that multiple parts of the app interact correctly.
      2. Step 2: Differentiate from other test types

        Unit tests check single functions; performance tests measure speed; syntax checks are done by compilers.
      3. Final Answer:

        To check how different parts of the application work together -> Option B
      4. Quick Check:

        Integration testing = check parts working together [OK]
      Hint: Integration tests check combined parts, not single functions [OK]
      Common Mistakes:
      • Confusing integration with unit testing
      • Thinking integration tests check performance
      • Believing integration tests check code syntax
      2. Which of the following is the correct way to initialize a NestJS application for integration testing?
      easy
      A. const app = await Test.createTestingModule({ imports: [AppModule] }).start();
      B. const app = new AppModule(); app.start();
      C. const app = await Test.createTestingModule({ controllers: [AppController] }).init();
      D. const app = (await Test.createTestingModule({ imports: [AppModule] }).compile()).createNestApplication(); await app.init();

      Solution

      1. Step 1: Recognize correct testing module setup

        Use Test.createTestingModule with imports and then compile() to build the module.
      2. Step 2: Create app instance and initialize

        After compiling, create the app with createNestApplication() then call app.init() to start the NestJS app for testing.
      3. Final Answer:

        const app = (await Test.createTestingModule({ imports: [AppModule] }).compile()).createNestApplication(); await app.init(); -> Option D
      4. Quick Check:

        compile() -> createNestApplication() -> init() [OK]
      Hint: Always compile() -> createNestApplication() -> init() [OK]
      Common Mistakes:
      • Calling init() directly on createTestingModule
      • Using start() method which does not exist
      • Not compiling the testing module before init
      3. Given this test snippet, what will be the HTTP status code returned?
      const response = await request(app.getHttpServer()).get('/users');
      expect(response.status).toBe(200);
      medium
      A. 200
      B. 401
      C. 500
      D. 404

      Solution

      1. Step 1: Understand the test request

        The test sends a GET request to '/users' route using supertest on the initialized app.
      2. Step 2: Check expected status code

        The test expects the response status to be 200, meaning success and route exists.
      3. Final Answer:

        200 -> Option A
      4. Quick Check:

        GET /users returns 200 success [OK]
      Hint: 200 means route responded successfully [OK]
      Common Mistakes:
      • Confusing 404 (not found) with 200
      • Assuming 500 error without error in code
      • Mixing authentication errors with route success
      4. You wrote this integration test but it fails with "Cannot read property 'getHttpServer' of undefined". What is the likely cause?
      let app;
      beforeAll(async () => {
        app = Test.createTestingModule({ imports: [AppModule] });
        await app.init();
      });
      medium
      A. Forgot to call compile() before init()
      B. Used beforeAll instead of beforeEach
      C. Did not import supertest library
      D. AppModule is missing from imports

      Solution

      1. Step 1: Identify missing compile() call

        Test.createTestingModule returns a builder; you must call compile() to get the module instance.
      2. Step 2: Understand why getHttpServer is undefined

        Without compile(), app is not a proper module instance, so app.getHttpServer is undefined causing the error.
      3. Final Answer:

        Forgot to call compile() before init() -> Option A
      4. Quick Check:

        compile() needed before init() [OK]
      Hint: Always compile() before init() to get app instance [OK]
      Common Mistakes:
      • Skipping compile() step
      • Confusing beforeAll with beforeEach for setup
      • Assuming missing imports cause this error
      5. You want to test a POST route that creates a user. Which approach correctly integrates NestJS and supertest for this integration test?
      hard
      A. Use Jest mocks to simulate the database and skip app initialization
      B. Directly call the controller method without app initialization and check returned value
      C. Use Test.createTestingModule with AppModule, compile and init app, then use supertest to POST JSON to '/users' endpoint
      D. Write a unit test for the service method that creates users

      Solution

      1. Step 1: Setup full app for integration test

        Integration tests require the full app context, so createTestingModule with AppModule, compile, and init the app.
      2. Step 2: Use supertest to send POST request

        Use supertest to send a POST request with JSON data to the '/users' route to test real HTTP behavior.
      3. Final Answer:

        Use Test.createTestingModule with AppModule, compile and init app, then use supertest to POST JSON to '/users' endpoint -> Option C
      4. Quick Check:

        Integration test = full app + supertest POST [OK]
      Hint: Integration tests use full app and supertest for HTTP calls [OK]
      Common Mistakes:
      • Testing controller methods directly without app context
      • Using mocks instead of real modules for integration tests
      • Confusing unit tests with integration 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