javascript - 如何在 Jest 中测试默认导出的 javascript 模块?

标签 javascript unit-testing vue.js jestjs

我有一个 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

最佳答案

此语法无法按预期工作:

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

箭头函数返回 undefined因为foolabel .

隐式返回应该被解析为一个对象:
jest.mock('/module/path', () => ({
  foo: jest.fn().mockReturnValue(true)
}))

或者考虑到它是默认导出,它更可能应该是:
jest.mock('/module/path', () => ({
  default: {
    foo: jest.fn().mockReturnValue(true)
  }
}))

关于javascript - 如何在 Jest 中测试默认导出的 javascript 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60072308/

相关文章:

javascript - jQuery 滚动到真正困惑的内容上突出显示的元素,需要帮助

javascript - 使用 Javascript 在 IE8+ 中查找邮政编码

javascript - 如何在元素html内添加元素数据属性值

asp.net-mvc - 如何使用犀牛模拟在 MVC RC1 中 stub HttpSessionState?

java - Gradle 在单元测试期间运行 flywayMigration

javascript - 函数 Query.where() 需要有效的第三个参数,但它是未定义的

javascript - 如何根据数字列从解析中排序数据数组

node.js - 使用 mocha 单元测试异步 waterfall

vue.js - vue-i18n 如何在js(运行时)中刷新/访问$i18n.locale 后保持语言?

javascript - 如何验证 Nuxt 中的路由参数?