Я пытаюсь добавить в память shim indexedDB, чтобы тесты выполнялись в Node.
В настоящее время у меня есть 2 модуля:
import Dexie from 'dexie';
export class DrugsDBLocal extends Dexie { ...
fake-indexedDb полифицирует соответствующие функции indexedDBкак:
var globalVar = typeof window !== "undefined" ? window : // self, global etc.
globalVar.indexedDB = fakeIndexedDB;
globalVar.IDBCursor = FDBCursor;
// nothing exported
Тест:
import 'fake-indexeddb/auto';
import { DrugsDBLocal } from '@/...DrugsLocalDb';
describe('setup local db', () => {
const db = new DrugsDBLocal(fileFetch, new EmptyLogger());
Проблема в том, что Dexie выполняется до того, как запустится polyfill.Очевидно, я не хочу помещать импорт в модуль DrugsDBLocal, так как в браузере не должно присутствовать многозаполнение.Тесты переносятся из машинописного текста с использованием веб-пакета (как проект vue-cli), и конгломерированный файл помещает код из 'fake-indexeddb / auto' ниже библиотеки Dexie.
Как убедиться, что пустой импорт 'fake-indexeddb / auto' выполняется первым?
Редактировать Vue cli создает новый файл webpack.config.js при каждом запуске теста,Я думаю, что мне нужно определить новую запись, как в этой ссылке веб-пакета .Я пробовал следующее безуспешно
module.exports = {
pages: process.env.NODE_ENV !== 'test' ? void 0 : {
testPolyfills:'./tests/test_resources/testPolyfills.js'
},
chainWebpack: config => {
if (process.env.NODE_ENV === 'test') {
config.entry('app').add('./src/main.ts');
}
}
}