#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.
Очевидно, что данные были удалены, но не влияют на то, как они будут выполняться.