Mithilfe der testgetriebenen Entwicklung nutzen Controller und Dienste in der NestJS-API dieselben Tests
P粉354602955
P粉354602955 2023-09-16 08:44:31
0
1
385

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ürUsersService编写了测试,但我对如何测试相应的UsersController感到困惑。此外,我对单元测试和集成测试之间的区别也不确定。下面,我将提供我已经编写的UsersServiceUsersControllergelungen 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 { // 验证方法:_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:

  • Wie ist es bei schriftlichen Tests andersUsersController,有哪些推荐的编写测试的方法?它们与为UsersService?
  • Was ist der Unterschied zwischen Unit-Tests und Integrationstests? Werden die Tests, für die ich schreibe, als Unit-Tests oder eine andere Art von Test betrachtet?UsersService
P粉354602955
P粉354602955

Antworte allen (1)
P粉052686710

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

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

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

    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!