Wordpress 如何对使用wp.apiFetch的gutenberg类/组件方法进行单元测试

Wordpress 如何对使用wp.apiFetch的gutenberg类/组件方法进行单元测试,wordpress,jestjs,wordpress-gutenberg,Wordpress,Jestjs,Wordpress Gutenberg,我试图在调用wp.apiFetch方法的类/组件上对一个方法进行单元测试,但当我运行测试时,它总是说TypeError:apiFetch不是一个函数下面的结构适用于其他测试用例,尽管它们不进行任何api调用 精简测试设置 global.wp = {}; // some other packages Object.defineProperty(global.wp, 'apiFetch', { get: () => require('@wordpress/api-fetch') }); 精简

我试图在调用wp.apiFetch方法的类/组件上对一个方法进行单元测试,但当我运行测试时,它总是说
TypeError:apiFetch不是一个函数
下面的结构适用于其他测试用例,尽管它们不进行任何api调用

精简测试设置

global.wp = {};
// some other packages
Object.defineProperty(global.wp, 'apiFetch', { get: () => require('@wordpress/api-fetch') });
精简测试

const { apiFetch } = wp;
// some more constants from window

class NewAuthor extends Component {
  // constructor
  // method to test
  createAuthor = () => {
    const { someFunc, someErrorFunc } = this.props;
    const authorObject = {
      name,
    } = this.state;
    const createPath = '/wp/v2/users';

    apiFetch({
      path: createPath,
      data: authorObject,
      method: 'POST',
    })
      .then((user) => {
        console.log('success', user);
        someFunc();
      })
      .catch((error) => {
        console.log('error', error);
        someErrorFunc();
      });
  };
  // some more methods
  // render
}

export default NewAuthor;
  • 浅层渲染组件
  • 在组件实例上调用有问题的方法-此时,由于顶部提到的错误,测试出错
  • 检查是否调用了该方法
  • const { apiFetch } = wp;
    // some more constants from window
    
    class NewAuthor extends Component {
      // constructor
      // method to test
      createAuthor = () => {
        const { someFunc, someErrorFunc } = this.props;
        const authorObject = {
          name,
        } = this.state;
        const createPath = '/wp/v2/users';
    
        apiFetch({
          path: createPath,
          data: authorObject,
          method: 'POST',
        })
          .then((user) => {
            console.log('success', user);
            someFunc();
          })
          .catch((error) => {
            console.log('error', error);
            someErrorFunc();
          });
      };
      // some more methods
      // render
    }
    
    export default NewAuthor;