Мне удалось в некоторой степени смоделировать typeorm, но теперь я столкнулся со странной проблемой, которую проиллюстрирую здесь.
import { myEntity } from './entity';
import typeorm = require('typeorm');
describe('test suire'), () => {
let myRepository: typeorm.Repository<myEntity>;
test('my test case', () => {
typeorm.Repository = jest.fn().mockReturnValue({
createQueryBuilder: jest.fn().mockReturnValue({
where: jest.fn().mockReturnThis(),
getMany: jest.fn().mockReturnValue([]);
})
});
myRepository = new typeorm.Repository();
expect(myRepository.createQueryBuilder).toHaveBeenCalledTimes(0);
})
})
У меня есть такая структура пакета:
root/
package.json
project1/
package.json
src/
the_above_test.spec.ts
Когда я запускаю node_modules/.bin/jest path_to_above_test.spec.ts
из project1
, это работает. Но когда я запускаю ту же команду из root
, я получаю:
Matcher error: received value must be a mock or spy function
Received has value: undefined at line:
expect(myRepository.createQueryBuilder).toHaveBeenCalledTimes(0);
Цель здесь - отладить тест из кода VS. Но так как код VS открыт на уровне root, он выполняет тест оттуда. Если в моем коде нет ошибки, как я могу сказать VS Code запустить тест из каталога project1
?