我知道这个问题已经在其他地方被问过,但就我而言,我遵循了mickael guay的笑话最佳实践视频(点击查看)
但不幸的是我得到了一个笑话错误,你的测试套件必须包含至少一个测试 但紧接着就有一项测试通过了。
这是我的代码: [...]
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()也等待测试? 非常感谢!
编辑:当我意识到我在另一个文件夹中隐藏了另一个旧的.spec文件时,就弄清楚了。删除它解决了问题。
当 Jest 测试中包含以下内容时,我看到了这种行为:
import { describe, it } from 'node:test';
删除该行后,测试仍然运行,但错误消失了。