Grâce au développement piloté par les tests, dans l'API NestJS, les contrôleurs et les services partagent les mêmes tests
P粉354602955
P粉354602955 2023-09-16 08:44:31
0
1
444

Je développe une API basée sur NestJS en utilisant Prisma et MySQL. Comme je suis nouveau dans le développement piloté par les tests (TDD), je souhaite commencer à ajouter des tests à mon projet. J'ai réussi pour UsersService编写了测试,但我对如何测试相应的UsersController感到困惑。此外,我对单元测试和集成测试之间的区别也不确定。下面,我将提供我已经编写的UsersServiceUsersController et testé l'extrait de code correspondant.

Solution prisme :

enum Role {
  ADMIN
  AMBASSADOR
  USER
}

model User {
  id        String   @id @default(uuid())
  email     String   @unique
  username  String   @unique
  firstname String
  lastname  String
  password  String
  role      Role     @default(USER)
  createdAt DateTime @default(now()) @map("created_at")
  updatedAt DateTime @updatedAt @map("updated_at")

  @@map("users")
}

UsersService (partie pertinente) :

async create(createUserDto: CreateUserDto): Promise<User> {
  // 验证方法:_validateUsername, _validateEmail, 等等。

  const createdUser = await this.prisma.user.create({
    data: {
      ...createUserDto,
      password: await this._hashPassword(createUserDto.password),
    },
  });

  // 返回选定的用户属性
  return {
    id: createdUser.id,
    username: createdUser.username,
    email: createdUser.email,
    firstname: createdUser.firstname,
    lastname: createdUser.lastname,
    role: createdUser.role,
    createdAt: createdUser.createdAt,
    updatedAt: createdUser.updatedAt,
  };
}

UsersController (partie pertinente) :

@Post()
@HttpCode(HttpStatus.CREATED)
create(@Body() createUserDto: CreateUserDto) {
  return this.usersService.create(createUserDto);
}

Questions spécifiques :

  • En quoi est-ce différent pour les tests écrits UsersController,有哪些推荐的编写测试的方法?它们与为UsersService ?
  • Quelle est la différence entre les tests unitaires et les tests d'intégration ? Les tests pour lesquels j'écris UsersService sont-ils considérés comme des tests unitaires ou un autre type de test ?

P粉354602955
P粉354602955

répondre à tous(1)
P粉052686710

À l'aide des tests unitaires, vous pouvez tester chaque méthode indépendamment, par exemple, si votre méthode de contrôleur appelle et renvoie une méthode d'un service, vous devez tester lors d'un test unitaire si la méthode du contrôleur appelle une méthode du service.

Les tests d'intégration consistent davantage à tester l'intégralité du code, généralement sans utiliser d'objets fictifs, et à essayer de tester l'intégralité du flux de l'application, en utilisant une base de données réelle et d'autres choses. Par exemple, vous pouvez tester des user stories telles que la connexion et la déconnexion, l'inscription et la création de profil, etc.

Personnellement, lorsque j'utilise TDD, j'écris d'abord des tests unitaires. J'écrirai des tests d'intégration plus tard si j'en ressens le besoin.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!