【发布时间】:2021-10-27 17:28:36
【问题描述】:
有人可以指导我对此控制器和查询外部api的服务进行单元测试,我已经做了一些我见过的事情,但我不知道它是否正确,感谢您的帮助。
photos.service.ts
import { HttpService } from '@nestjs/axios';
import { Injectable } from '@nestjs/common';
@Injectable()
export class PhotosService {
constructor(private httpService: HttpService) {}
async getPhotos() {
return this.httpService.axiosRef.get(
`https://jsonplaceholder.typicode.com/photos`,
);
}
}
photos.controller.ts
import { Controller, Get } from '@nestjs/common';
import { PhotosService } from './photos.service';
@Controller('photos')
export class PhotosController {
constructor(private api: PhotosService) {}
@Get()
async getPhotos() {
return this.api.getPhotos();
}
}
photos.controller.spec.ts
import { HttpModule } from '@nestjs/axios';
import { HttpStatus } from '@nestjs/common';
import { Test, TestingModule } from '@nestjs/testing';
import { AxiosResponse } from 'axios';
import { PhotosController } from './photos.controller';
import { PhotosService } from './photos.service';
describe('PhotosController', () => {
let photosController: PhotosController;
let photosService: PhotosService;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
controllers: [PhotosController],
providers: [PhotosService],
imports: [HttpModule],
}).compile();
photosController = module.get<PhotosController>(PhotosController);
photosService = module.get<PhotosService>(PhotosService);
});
it('should be defined', () => {
expect(photosController).toBeDefined();
});
describe('getPhotos', () => {
it('should return a user', async () => {
const data = ['test'];
const response: AxiosResponse<any> = {
data,
headers: {},
config: { url: 'http://localhost:3000/mockUrl' },
status: 500,
statusText: 'OK',
};
jest
.spyOn(photosService, 'getPhotos')
.mockImplementation(async () => response);
expect(await photosController.getPhotos()).toEqual(response);
});
});
});
【问题讨论】:
-
错误是什么?
标签: typescript unit-testing jestjs nestjs