Создание временного ORM для результатов тестирования в TypeError: "Не удается переопределить свойство"

Для тестирования моделей (или, точнее, их редукторов) я создал функцию, которая создает хранилище Redux только с указанными в нем моделями ORM, чтобы запускать утверждения для него, чтобы гарантировать отправку правильных действий, а также создание и сохранение объектов в магазине. Это прекрасно работает для моделей без каких-либо отношений, однако, когда я пытаюсь протестировать любую модель, имеющую отношение к другой, я получаю "TypeError: Cannot redefine property X" - X является свойством модели, которая имеет отношение к другой модели. Похоже, что после тщательного изучения процесса это происходит в функции createStore.

import {ORM} from "redux-orm";

function prepareStore(Models) {
    let testORM = new ORM();

    let passMods = Object.values(Models);
    testORM.register(...passMods);

    let ormReducer = createReducer(testORM);
    let reducers  = combineReducers({
        orm: ormReducer,
    })

    let fakeStore = createStore(    // Error appears to occur here
        reducers,
        undefined,
        undefined,
    );
    return fakeStore;
}

И пример теста, который завершается без ошибок, выглядит как

import * as Models from "models";

it ("Creates a Test Model", function() {
    let fakeStore = prepareStore({Models.Test});
    let testData = {
        id: 0,
        name: "TEST",
    };

    let testAction = {
        type: Constants.CREATE_TEST,
        payload: testData,
    };
    fakeStore.dispatch(testAction1);

    let ormState = fakeStore.getState().orm;
    expect(ormState.Test.itemsById["0"].id).to.equal(0);
    expect(ormState.Test.itemsById["0"].name).to.deep.equal("TEST");
    expect(ormState.Market.meta.maxId).to.equal(0);
});

Любопытный аспект связан с нашей производственной средой, все модели зарегистрированы одновременно, и нет никаких ошибок в переопределении свойств. Кто-нибудь еще сталкивался с этой проблемой и посоветует потенциальное решение?

0 ответов

Другие вопросы по тегам