Я пытаюсь запустить тесты 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
и более.