1.0.5 • Published 1 year ago

nestjs-mocha-decorators v1.0.5

Weekly downloads
-
License
UNLICENSED
Repository
-
Last release
1 year ago

Nest.js Mocha Decorators

This library lets you use test decorators to create your test suite, with all these benefits

  • You can create tests suites and tests using classes, instead of jest or mocha anonymous functions
  • You can inject your components in your tests, instead of using app.get(Component to use)
  • You can use inheritance
  • You can pick which test or suite you want to run

Example

```
@TestSuite('Demo Test Suite')
export class DemoTest {

    @Inject() 
    private readonly httpService: HttpService

    @Test('Get Test')
    async testGet(): Promise<void> {
        const { data } = await firstValueFrom(this.httpService.get('http://localhost:4343/demo'))
        expect(data).toBe('Hello, Test world !')
    }
}
```

Installation

Install with npm globally: ( as a development dependency because it will be use for tests only )

npm i --save-dev nestjs-mocha-decorators

Configuration

Its better with an example.

  • Add your tests entry point in test directory ( test/test.entrypoint.ts )
import { HttpModule } from '@nestjs/axios';
import { ConsoleLogger, INestApplication } from '@nestjs/common';
import { Test, TestingModule, TestingModuleBuilder } from '@nestjs/testing';
import { MochaTestModule, MochaTestService } from '../src'; // Change this to import { MochaTestModule, MochaTestService } from 'nestjs-mocha-decorators'
import { DemoTest } from './tests/demo.test';
import { YourAppModule } from './your-app/your-app.module';
import { run } from 'mocha';

const initNest = async (): Promise<INestApplication> => {
  const testingModuleBuilder: TestingModuleBuilder = await Test.createTestingModule({
    imports: [
      YourAppModule,  // The app to test
      MochaTestModule.registerTests([DemoTest], [HttpModule]) // Your test suite
    ],
  })
  const testingModule: TestingModule = await testingModuleBuilder.compile();
  const app = testingModule.createNestApplication();
  app.useLogger(new ConsoleLogger());
  app.listen(4343)
  return app
}

(async (): Promise<void> => {
  const app = await initNest();
  app.get(MochaTestService).declareTests()
  run();
})();
  • Add this line to your package.json
    "test": "mocha --delay --exit --require ts-node/register --require tsconfig-paths/register test/test.entrypoint.ts"
  • Start coding your tests
import { HttpService } from "@nestjs/axios";
import { Inject } from "@nestjs/common";
import { firstValueFrom } from "rxjs";
import { Test, TestSuite } from "../../src";
import expect from 'expect'


@TestSuite('Demo Test Suite')
export class DemoTest {

    @Inject()
    private readonly httpService: HttpService

    @Test('Get Test')
    async testGet(): Promise<void> {
        const { data } = await firstValueFrom(this.httpService.get('http://localhost:4343/demo'))
        expect(data).toBe('Hello, Test world !')
    }
}
  • Run all your tests with:
npm run test
  • If you want to run the tests of a single class ( suite ), you can:
SUITETORUN="Demo Test Suite" npm run test
  • Or, perhaps you want to run a single test, with:
TESTTORUN="Get Test" npm run test

Comments, suggestions and more

Creating a ticket on github can be very annoying ... send me your comments, problems and suggestions to mcarrizo@gmail.com

Best !

1.0.8

1 year ago

1.0.5

1 year ago

1.0.3

1 year ago

1.0.4-alpha

1 year ago

1.0.2

1 year ago

1.0.0

1 year ago

0.0.27

1 year ago

0.0.26

1 year ago

0.0.23

1 year ago

0.0.22

1 year ago

0.0.21

1 year ago

0.0.20

1 year ago

0.0.19

1 year ago

0.0.18

1 year ago

0.0.17

1 year ago

0.0.16

1 year ago

0.0.15

1 year ago

0.0.14

1 year ago

0.0.13

1 year ago

0.0.12

1 year ago

0.0.11

1 year ago

0.0.10

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.7

1 year ago

0.0.6

1 year ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago