Heim > Fragen und Antworten > Hauptteil
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
感到困惑。此外,我对单元测试和集成测试之间的区别也不确定。下面,我将提供我已经编写的UsersService
、UsersController
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:
UsersController
,有哪些推荐的编写测试的方法?它们与为UsersService
? UsersService
P粉0526867102023-09-17 00:07:45
使用单元测试,您可以独立测试每个方法,例如,如果您的控制器方法调用并返回服务的方法,则应在单元测试中测试控制器方法是否调用服务的方法。
集成测试更多地是关于测试整个代码,通常不使用模拟对象,并尝试测试应用程序的整个流程,使用真实的数据库和其他内容。例如,您可以测试用户故事,如登录和注销,注册和创建个人资料等。
个人而言,在使用TDD时,我首先编写单元测试。如果我感觉需要,我之后会编写集成测试。