Почему мой тест не пройден для этого пользовательского промежуточного программного обеспечения? - PullRequest
0 голосов
/ 27 марта 2020

Я собрал какое-то пользовательское промежуточное ПО, и все это работает (с точки зрения того, что он делает в браузере то, что я хочу), однако я не могу пройти тест

export const myMiddleware = ({ getState }) => (next) => (action) => {
    switch (action.type) {
        case ACTIONS.MY_TEST_ACTION:
            myTestFunction() // this definitely gets called and ran in the code

            next(action)

            return

        default:
            break
    }

    return next(action)
}

мой тест

jest.mock('utils/myUtil', () => ({
    myTestFunction: jest.fn(),
}))

const create = () => {
    const store = {
        getState: jest.fn(() => dummyState()),
        dispatch: jest.fn(),
    }
    const next = jest.fn()

    const invoke = async action => myMiddleware(store)(next)(action)

    return { store, next, invoke }
}

beforeEach(() => jest.clearAllMocks())

it('should call firePageView for SHARED_ACTIONS.FIRE_PAGE_VIEW', () => {
    const { invoke } = create()

    expect(myTestFunction).not.toHaveBeenCalled()

    invoke({ type: ACTIONS.MY_TEST_ACTION })

    expect(myTestFunction).toHaveBeenCalled()
})

Я не уверен, что я делаю не так? Я запускаю действие и пытаюсь утверждать, что моя функция была вызвана. он регистрирует все, когда я запускаю его в браузере. почему не в тесте?

...