Импортируйте файл json в макет данных для моих тестов - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь смоделировать данные в моих тестах с жасмином.

В спецификации компонента я использую:

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 , но это не помогло.

1 Ответ

0 голосов
/ 08 февраля 2019

Вы можете иметь что-то вроде:

export const USER_OBJECTS: User[] = [
    {
        'firstName': 'Ana',
        'lastName': '..',
        'fullName': '..',
        'userName': '..',
        'email': '...'
    } as User,
    {
        'firstName': 'Lisa',
        'lastName': '..',
        'fullName': '..',
        'userName': '...',
        'email': '...'
    } as User
];

В вашем mocks/users.json.ts и импортировать его в файл-заглушку, например:

import {USERS_OBJECTS} from '../mocks/users.json.ts';

Тогда ваш сервис-заглушка будет выглядеть так:

export const MyServiceStub =  {
  users: require('../../mocks/users.json'),

  getUsers(): Observable<User[]> {
    return of(USER_OBJECTS);
  }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...