【发布时间】:2022-12-11 05:28:26
【问题描述】:
我知道这个问题已经在其他地方被问过了,但就我而言,我遵循了 michael guay (click to view) 的最佳实践视频
但不幸的是我得到了一个开玩笑的错误,您的测试套件必须至少包含一项测试但紧接着一项测试就通过了。
这是我的代码: [...]
const mockResponse = {
json: jest.fn(),
status: jest.fn().mockReturnThis(),
} as unknown as Response<any, Record<string, any>>;
describe('UsersController', () => {
let usersController: UsersController;
let usersService: UsersService;
beforeEach(async () => {
const moduleRef = await Test.createTestingModule({
imports: [],
controllers: [UsersController],
providers: [
UsersService,
{ provide: getModelToken(User.name), useValue: jest.fn() },
{ provide: getModelToken(Role.name), useValue: jest.fn() },
],
}).compile();
usersController = moduleRef.get<UsersController>(UsersController);
usersService = moduleRef.get<UsersService>(UsersService);
jest.clearAllMocks();
});
describe('findOneById', () => {
describe('when findOneById is called', () => {
beforeEach(async () => {
const user: Partial<User> & Response =
await usersController.findOneById(mockResponse, userStub().userId);
console.log('user', user);
});
it('then it should call usersService', () => {
expect(usersService.findOneById).toBeCalledWith(userStub().userId);
});
});
});
});
我想也许是因为我有一个 describe() 嵌套在一个 describe() 中,这使得第一个 describe() 也在等待测试? 非常感谢!
【问题讨论】:
-
删除任何包装
describe而不是直接it,它们不是必需的。