Mocha не игнорирует node_modules при импорте в файлы не-spe c - PullRequest
0 голосов
/ 01 марта 2020

Я пытаюсь запустить тесты Mocha в моем проекте машинописного текста.

У меня есть файл user.spec.ts, который включает такие модули, как @firebase/testing и chai, и я могу запустить этот файл без проблем.

Когда я включаю импорт из локального файла import {randomTest} from './user'; Я все еще могу запустить тесты, и все в порядке.

Мой tsconfig. json равен

{
  "compilerOptions": {
    "allowSyntheticDefaultImports": true,
    "jsx": "react-native",
    "lib": ["dom", "esnext"],
    "module": "CommonJS",
    "noEmit": true,
    "skipLibCheck": true,
    "resolveJsonModule": true
  }
}

Когда я включаю что-либо, что является node_module в мой импортированный файл, я получаю ошибку Unexpected token {

Из того, что я могу сказать, node_modules игнорируется в файлах .spec.ts, но не в файлах .ts.

Вот пример файла ts

import * as firebase from '@firebase/testing';
import { assert } from 'chai';

import 'mocha';
import * as appConfig from '../../app-dev.json';
import { setUser, getUserRemote } from './user'; // this file breaks when including node_modules

const projectId = appConfig.expo.extra.firebase.projectId;

firebase.initializeAdminApp({ projectId });
beforeEach(async () => await firebase.clearFirestoreData({ projectId }));
describe('testing user', () => {
  it('should run tests', async () => {
    await setUser(
      {
        email: 'test@email.com',
        firstName: 'first',
        lastName: 'last',
        id: 'test_user_1',
        accessToken: 'accessToken1',
        firebaseUid: 'fireBaseUid1',
      },
      'remote',
    );
    const user = await getUserRemote('test_user_1');
    assert(user.email === 'test@email.com');
  });
});

И файл .ts с ошибками

import * as Google from 'expo-google-app-auth';
import { FirebaseService } from '../services/firebaseService';
import AsyncStorage from '@react-native-community/async-storage';

const fb = FirebaseService.getInstance();

export interface BlissUser {
  email: string;
  firstName: string;
  lastName: string;
  id: string;
  accessToken: string;
  firebaseUid: string;
}

type StoreLocation = 'local' | 'remote' | 'both';

export const setUser = async (user: BlissUser, location: StoreLocation) => {
  switch (location) {
    case 'local':
      await setUserLocal(user);
      break;
    case 'remote':
      await setUserRemote(user);
    case 'both':
      await setUserLocal(user);
      await setUserRemote(user);
    default:
      await setUserLocal(user);
  }
};

Тесты выполняются с помощью mocha -r ts-node/register src/**/*.spec.ts

Хотя есть много похожих вопросов, ответы на все из них не сработали. Я перепробовал все -r @babel/register --ignore node_modules tsconfig.modules.commonjs и более.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...