笑话测试减少动作



我正在尝试使用Jest测试我的应用程序的redux操作。我看过测试网站@ redux.js.org和其他论坛的帖子,但我看不出为什么我得到了错误,我想我没有得到嘲笑是如何工作的。

我的动作在index.js:

export const setResponse = (res) => {
    return {
        type: 'RESPONSE_RECEIVED',
        payload: res
    }
};

我的测试是actions.test.js:

import * as actions from '../src/client/scripts/actions/index'
describe('actions', () => {
  it('should create an action to receive a response', () => {
    const payload = {response: 'solr_json'};
    const expectedAction = {
      type: 'RESPONSE_RECEIVED',
      payload
    }
    expect(actions.setResponse(payload)).toEqual(expectedAction)
  })
});

我得到了错误'Expected undefined to equal Object…所以我想到了行动。setResponse不存在,所以我打印了actions。setResponse,它看起来像这样:

{ [Function: setResponse]
  _isMockFunction: true,
  getMockImplementation: [Function],
  mock: { calls: [], instances: [] },
  mockClear: [Function],
  mockReturnValueOnce: [Function],
  mockReturnValue: [Function],
  mockImplementationOnce: [Function],
  mockImpl: [Function],
  mockImplementation: [Function],
  mockReturnThis: [Function] }

所以看起来函数在那里,我如何在Jest测试中调用函数呢?即使我改变

export const setResponse = (res) =>

export function setResponse(res)

(所以它是相同的格式的redux.js.org教程),我得到相同的错误。作为参考,这是我的package.json的jest部分:

"jest": {
    "scriptPreprocessor": "node_modules/babel-jest",
    "testFileExtensions": [
      ".test.js"
    ],
    "testPathDirs": [
      "__tests__"
    ],
    "moduleFileExtensions": [
      "js"
    ],
    "unmockedModulePathPatterns": [
      "node_modules/react",
      "node_modules/react-addons-test-utils",
      "node_modules/react-dom"
    ]
  }

感谢您的帮助

问题似乎是您要测试的模块被模拟,因为您使用unmockedModulePathPatterns。来自文档:

与所有匹配的regexp模式字符串数组模块加载器之前的模块将自动返回他们。如果一个模块的路径匹配此列表中的任何模式,它就会被删除不是会被模块加载器自动模拟吗?

我猜,如果你删除这一行模块不会自动模拟。通常在测试中使用jest.mock更容易模拟你想要直接模拟的东西。或者将源文件夹添加到unmockedModulePathPatterns列表

相关内容

  • 没有找到相关文章

最新更新