【问题标题】:jest: Test suite failed to run, TypeError: Cannot read property 'SHORT' of undefined开玩笑:测试套件无法运行,TypeError:无法读取未定义的属性“SHORT”
【发布时间】:2017-09-19 17:15:03
【问题描述】:

我正在尝试用 Jest 编写 Action Creators 测试。

下面是我要测试的动作创建器..

export function clearPost() {
   return {
      type: CLEAR
   };
 }

测试代码如下。

const clearPost = require('../../../src/redux/modules/post');
const CLEAR = 'teamhub/post/CLEAR';

describe('actions', () => {
  test('should create an action to clear post', () => {
    const expectedAction = {
      type: CLEAR,
    }
    expect(clearPost).toEqual(expectedAction);
  });
});

当我运行此测试时,收到有关 react-native-simple-toast 模块的属性 SHORT 的错误。

但是,由于Toast与测试无关,所以我不明白为什么会出现这样的错误。

我已经确认即使我运行应用程序也不会出现与Toast相关的错误,所以我认为是由于测试。

Error message

有人有类似的问题吗?

或者,如果您能获得关于如何做或如何调查疑问的建议,我会很高兴。

*虽然句子可能不太好,请见谅。 (>

【问题讨论】:

    标签: react-native react-redux toast jestjs


    【解决方案1】:

    这可能是因为 Toast 加载的那一刻,它正在尝试访问一个仅在您的生产运行时(而不是您的测试运行时)中设置的对象。如果您遵循您正在测试的模块的依赖关系图,您会发现有东西正在尝试加载 Toast。

    https://github.com/xgfe/react-native-simple-toast/blob/8d951627aac159ae5886a79f27df06e40c90ba92/index.js#L7-L8

    您需要完全阻止 toast 模块运行,这样它就不会尝试访问未定义对象上的变量。您可以通过使用manual mocks 或使用moduleNameMapperreact-native-simple-toast 映射到存根来做到这一点。

    【讨论】:

    • Mr.Lewis Chung 感谢您的具体解决方案!太棒了,这两种解决方案都是由 Jest.w(゚o゚*)w 正确准备的,我从来都不知道,所以我想阅读我得到的链接的文档。非常感谢!!(^ω^)
    猜你喜欢
    • 2017-07-30
    • 2020-11-19
    • 2018-06-17
    • 1970-01-01
    • 2019-02-16
    • 2020-07-10
    • 2017-12-15
    • 2023-03-03
    • 2017-08-13
    相关资源
    最近更新 更多