【问题标题】:Jest.mock outside variable referenceJest.mock 外部变量引用
【发布时间】:2017-03-31 03:21:58
【问题描述】:

需要模拟 1 个反应组件,只是简单的虚拟模拟,用于快照测试。

当我尝试调用 React.Component inside 模拟函数时,出现错误:

jest.mock() 的第二个参数不允许引用任何 外部变量。

但是如果我打电话给require('react').Component,那就行了! 有没有任何人性化的方法可以正确地做到这一点?

我的代码:

//This one fails
import React from ('react');
...
    jest.mock('...', () => { return class ... extends React.Component {
            render(){
                return <span/>
            }

    }});

//This one works
import React from ('react');
...
jest.mock('...', () => { return class ... extends require('react').Component {
            render(){
                return <span/>
            }

    }});

【问题讨论】:

    标签: javascript reactjs jestjs


    【解决方案1】:

    Based on GitHub thread

    这曾经是我们修复的错误。在模拟中,您只能要求 本地的东西,你不能访问外部变量。

    您可以通过这种方式更改代码以使其正常工作

    jest.mock('...', () => {
      const React = require ('react')
      return class ... extends React.Component {
        render() {
          return <span />
        }    
      }
    })
    

    【讨论】:

    • 但是如果你想改变一个变量呢?假设您想模拟一个具有一个对象的函数,并且为了在一个测试中进行测试,它必须为真,其他为假。我现在该怎么做?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    相关资源
    最近更新 更多