Я пытаюсь смоделировать данные в моих тестах с жасмином.
В спецификации компонента я использую:
describe('MyComponent', () => {
const user: User = require('../../mocks/user.json');
Я служебная заглушка, которую я помещаю в / src / mocks/services/service.stub.ts
import { Observable, of } from 'rxjs';
export const MyServiceStub = {
users: require('../../mocks/users.json'),
getUsers(): Observable<any> {
return of(this.users);
}
};
С этим npm run test работает, но приложение не компилируется из-за
ОШИБКА в src / app / mocks / services / UserServiceStub.ts (4,15): ошибка TS2304: не удается найти имя 'require'.
Я пытался изменить tsconfig.json с
"compilerOptions": {
"resolveJsonModule": true,
"esModuleInterop": true
}
И импорт макетирует json с помощью:
import * as users from '../../mocks/users.json';
Это уничтожило все мои импортные данные как momentJS (импорт * как момент из 'момента')
Я прочитал, что могу просто добавить
"allowSyntheticDefaultImports": true
Но это не помогло ...
Как правильно импортировать файл json в мои тесты?
РЕДАКТИРОВАТЬ: Я забыл сказать, что require работает в моих файлах спецификаций, он просто не работает, когда я использую его в / src / mocks / services / MyService.stub.ts
Я изменил заглушенный сервис, чтобы он стал классом, и изменилпровайдер должен использовать useClass вместо useValue , но это не помогло.