suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Mithilfe der testgetriebenen Entwicklung nutzen Controller und Dienste in der NestJS-API dieselben Tests

Ich entwickle eine NestJS-basierte API mit Prisma und MySQL. Da ich neu in der testgetriebenen Entwicklung (TDD) bin, möchte ich damit beginnen, Tests zu meinem Projekt hinzuzufügen. Es ist mir für UsersService编写了测试,但我对如何测试相应的UsersController感到困惑。此外,我对单元测试和集成测试之间的区别也不确定。下面,我将提供我已经编写的UsersServiceUsersController gelungen und ich habe das entsprechende Code-Snippet getestet.

Prismenlösung:

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 (relevanter Teil):

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 (relevanter Teil):

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

Spezifische Fragen:

P粉354602955P粉354602955445 Tage vor521

Antworte allen(1)Ich werde antworten

  • P粉052686710

    P粉0526867102023-09-17 00:07:45

    使用单元测试,您可以独立测试每个方法,例如,如果您的控制器方法调用并返回服务的方法,则应在单元测试中测试控制器方法是否调用服务的方法。

    集成测试更多地是关于测试整个代码,通常不使用模拟对象,并尝试测试应用程序的整个流程,使用真实的数据库和其他内容。例如,您可以测试用户故事,如登录和注销,注册和创建个人资料等。

    个人而言,在使用TDD时,我首先编写单元测试。如果我感觉需要,我之后会编写集成测试。

    Antwort
    0
  • StornierenAntwort