Как проверить по умолчанию экспортированный модуль javascript в Jest? - PullRequest
3 голосов
/ 05 февраля 2020

У меня есть module.js файл с таким содержимым

export default {
    foo(),
    bar()
}

Я попытался сделать это на моем тестовом файле

jest.mock('/module/path', () => {
  foo: jest.fn().mockReturnValue(true)
})

import Module from './module/path'

, и это тест, который я пытаюсь сделать

  test('test the module', () => {
    let fooSpy= jest.spyOn(Module, 'foo')

    vm.methodThatUseFoo()

    expect(fooSpy).toBeCalled()
  })

и с этой ошибкой я столкнулся

Cannot spyOn on a primitive value; undefined given

1 Ответ

2 голосов
/ 05 февраля 2020

Этот синтаксис не работает должным образом:

jest.mock('/module/path', () => {
  foo: jest.fn().mockReturnValue(true)
})

Функция стрелки возвращает undefined, поскольку foo является меткой .

Неявный возврат должен быть проанализирован как объект:

jest.mock('/module/path', () => ({
  foo: jest.fn().mockReturnValue(true)
}))

Или, учитывая, что это экспорт по умолчанию, он, скорее всего, должен быть:

jest.mock('/module/path', () => ({
  default: {
    foo: jest.fn().mockReturnValue(true)
  }
}))
...