Как реализовать юнит-тестирование для охранников в Nest JS? - PullRequest
1 голос
/ 20 мая 2019

Я хочу реализовать модульное тестирование для охранников, используя nest js (Jest JS). Я не смог найти много документации.

import {Test, TestingModule} from '@nestjs/testing';
import {CatsController} from '../src/modules/cats/cats.controller';
import {CatsService} from '../src/modules/cats/cats.service';
import {ICat} from '../src/modules/cats/interfaces/ICat';
import {JwtStrategy} from '../src/strategy/AppId.strategy';

  beforeEach(async () => {
     const module = await Test.createTestingModule({
             controllers: [CatsController],
             providers: [CatsService],
         }).compile();

    catsService = module.get<CatsService>(CatsService);
    catsController = module.get<CatsController>(CatsController);

  });
  describe('findAll', () => {
    it('should return an array of cats', async () => {
      // const appIdAuthContext: AppIDAuthToken = tokenInfo;
      const result: ICat = {
        name: 'test',
        age: 1,
        breed: 'one'
      };
      jest.spyOn(catsService, 'findAll').mockImplementation(() => result);
      console.log(result);
      console.log(catsController.findAll());
      expect(await catsController.findAll()).toBe(result);
    });
  });

Приведенный выше код вернет массив котов. я хочу реализовать охрану для этого модульного теста.

1 Ответ

0 голосов
/ 22 мая 2019

Я нашел реализацию. Я делюсь примером, он может кому-нибудь помочь

function createTestModule() {
      return Test.createTestingModule({
        imports: [
          PassportModule.register({defaultStrategy: 'jwt'}), CatsModule
        ],
        controllers: [
          AppController
        ],
        providers: [
          AppService, RoleGuard, JwtStrategy
        ],
        exports: [PassportModule]
      }).compile();
    }

beforeEach(async () => {
  const module = (await createTestModule(
    ));
  app = module.createNestApplication();
  server = app.getHttpServer();
  await app.init();
});

  it('Should create cat for admin', async () => {
    return await request(server)
        .post('/cats/createcat')
        .set('Authorization', catAdminToken)
        .set('Accept', 'application/json')
        .send(catDto)
        .expect(201);
  });
...