Тестирование React Native не может прочитать свойство ‘call’ неопределенного

#react-native #jestjs #react-test-renderer

#react-native #jestjs #react-test-renderer

Вопрос:

Я создал приложение на react native и сейчас прохожу процесс обновления некоторых старых наборов тестов. Тест, в котором выполняется ошибка, представляет собой компонентный тест с использованием средства визуализации react test для имитации функциональности экрана.

Сводка ошибок: один из операторов expect выдает сообщение об ошибке

Не удается прочитать свойство ‘call’ неопределенного

Когда значение существует, и я могу распечатать вызов свойства таким образом console.log(store.dispatch.mock.calls[6][0]); , и оно дает мне ожидаемое значение.

код:

 //Imports
jest.spyOn(Date, "now").mockImplementation(() => 1479427200000);
const mockStore = configureStore([]);

describe("block1", () => {
    it("test1", async done => {
        try {
            let component;
            let store = mockStore(stores.SummaryR1);
            store.dispatch = await jest.fn();
            const mockDate = new Date(1466424490000);
            const spy = jest.spyOn(global, "Date").mockImplementation(() => mockDate);
            Date.now = jest.fn(() => 1466424490000);
            await act(async () => {
                component = await renderer.create(
                    <PaperProvider>
                        <Provider store={store}>
                            <Receive_Signature />
                        </Provider>
                    </PaperProvider>
                );
            });
            const expected = await component.toJSON();
            expect(expected).toMatchSnapshot();

            await act(async () => {
                //action
            });
            await act(async () => {
                //action
            });
            await act(async () => {
                //action
            });
            await act(async () => {
                //action
            });
            await act(async () => {
                //action
            });
            expect(store.dispatch).toHaveBeenCalledTimes(8);
            expect(store.dispatch).toHaveBeenNthCalledWith(1, {results1});
            expect(store.dispatch).toHaveBeenNthCalledWith(2, {results2});
            expect(store.dispatch).toHaveBeenNthCalledWith(3, {results3});
            expect(store.dispatch).toHaveBeenNthCalledWith(4, {results4});
            expect(store.dispatch).toHaveBeenNthCalledWith(5, {results5});
            expect(store.dispatch).toHaveBeenNthCalledWith(6, {results6});
            expect(store.dispatch).toHaveBeenNthCalledWith(7, {results7} );
            expect(store.dispatch).toHaveBeenNthCalledWith(8, {results8});
            expect(navigateToScreen).toHaveBeenCalledTimes(1);
            expect(navigateToScreen.mock.calls[0][0]).toEqual("Processor_Dashboard");

            done();
        } catch (error) {
            done.fail(error);
        }
    }, 15000);
  

Ошибка формируется при результатах тестирования7 при 7-м вызове.

Во-первых, я знаю, что есть 8 вызовов из-за expect(store.dispatch).toHaveBeenCalledTimes(8);

Затем я могу также распечатать results7 и убедиться, что у меня есть правильные данные для results7. Но когда я запускаю его в инструкции jest expect, я получаю сообщение об ошибке:

Не удается прочитать свойство ‘call’ неопределенного

Я понятия не имею, почему возникает эта ошибка, поскольку выполняются все остальные ожидания, и если я закомментирую только одно утверждение, остальная часть пакета также будет работать нормально. По какой-то причине он выдает ошибку только в одном операторе expect.

Очевидно, что данные были удалены, но не влияют на то, как они будут выполняться.