ใน task.service.ts
ใช้ Repository<Task>
ตามแบบของ Typeorm
// task.servic.ts
@Injectable()
export class TaskService {
constructor(
@InjectRepository(Task)
private readonly taskRepository: Repository<Task>,
) {}
...
}
เราสามารถ config TypeOrmModule.forRoot
และ TypeOrmModule.forFeature
แบบเดียวกับที่ทำใน AppModule ได้เลย และจะให้ Clean ก็แยกออกมาอีก 1 file เพื่อจะได้ใช้ test กันส่วนอื่นๆ ด้วย
สร้าง src/test-utils/TypeORMMySqlTestingModule.ts
// src/test-utils/TypeORMMySqlTestingModule.ts
import { TypeOrmModule } from '@nestjs/typeorm';
export const TypeORMMySqlTestingModule = (entities: any[]) => [
TypeOrmModule.forRoot({
type: 'mysql',
host: process.env.MYSQL_HOST || 'localhost',
port: 3306,
username: process.env.MYSQL_USERNAME || 'nest',
password: process.env.MYSQL_PASSWORD || 'nest',
database: process.env.MYSQL_DATABASE || 'test',
entities: [...entities],
synchronize: true,
})
TypeOrmModule.forFeature([Task]),
];
imports เข้าไปใน TestingModule
// task.service.spac.ts
...
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
imports: [...TypeORMMySqlTestingModule([Task])],
providers: [TaskService],
}).compile();
service = module.get<TaskService>(TaskService);
});
...
Run test เลย
$ yarn test src/task/task.service.spec.ts
enjoy your test
Top comments (0)