在componentDidMount内部模拟API调用方法

kcon123

有人对如何对该组件进行单元测试有任何建议吗?我正在努力研究如何正确模拟getFoo,然后在运行测试之前等待其承诺解决。我目前正在使用Jest尝试执行此操作。

import { getFoo } from "../../../api/fooApi";

class Accordion extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      isActive: false,
      isLoaded: false
    };
  }

  componentDidMount() {
    getFoo(this.props.id).then(
      result => {
        this.setState({
          isLoaded: true,
          foo: result
        });
      },
      error => {
        this.setState({
          isLoaded: true,
          error
        });
      }
    );
  }

  render() {
    const { isActive, isLoaded, foo } = this.state;

    if (!isLoaded) return <Spinner />;

    return (
      <Accordion styled>
        <Accordion.Title
          active={isActive}
          onClick={() => {
            this.setState({ isActive: !isActive });
          }}
        >
          <Icon name="dropdown" />
          {foo}
        </Accordion.Title>
        <Accordion.Content active={isActive}>
          {foo}
        </Accordion.Content>
      </Accordion>
    );
  }
}

这是实际的方法。

export async function getFoo(id) {
  const res = await fetch(`/api/foo/${id}`);
  if (res.status !== 200) throw Error;
  return res.json();
}
Yuan-Hao Chiang

我将使用nock,它可以让您模拟API响应,这是详细说明如何使用它的帖子,它类似于以下内容:

...
import nock from 'nock'; 

it('renders without crashing', () => { 

   const scope = nock('http://myapi.com') 
   .get('/api/foo/')
   .reply(200, { products: [{ id: 1, name: 'nocked data' }] }, 
   { 
     'Access-Control-Allow-Origin': '*', 
     'Content-type': 'application/json' 
   }); 

   const div = document.createElement('div');
   ReactDOM.render(<ProductsList />, div);
   ReactDOM.unmountComponentAtNode(div); 
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何模拟对Junit的内部方法的调用

来自分类Dev

Mockito间谍如何模拟内部方法调用?

来自分类Dev

模拟内部对象调用

来自分类Dev

如何模拟其他方法内部的方法调用返回

来自分类Dev

模拟另一个类方法的内部调用

来自分类Dev

如何在React-Native中使用访存在ComponentDidMount内部执行多个API调用?

来自分类Dev

如何模拟内部调用(xlwt)?

来自分类Dev

Grails / Spock:如何在类内部模拟单个方法,而从类本身内部调用方法?

来自分类Dev

未从 componentDidMount 方法调用函数

来自分类Dev

未调用模拟方法

来自分类Dev

如何模拟另一个方法内部调用的方法?

来自分类Dev

如何在要使用NUnit测试的方法内部模拟方法调用?

来自分类Dev

Mockito:如何模拟另一个方法内部调用的方法

来自分类Dev

测试/模拟从视图控制器上的方法内部调用为类方法的UIAlertView

来自分类Dev

在方法内部调用方法

来自分类Dev

从内部方法调用方法

来自分类Dev

闭包内部的模拟方法

来自分类Dev

在控制器内部调用时,模拟的DbSet方法将引发NotImplementedException

来自分类Dev

用componentDidMount()反应进行api调用

来自分类Dev

如何模拟模拟对象的方法调用?

来自分类Dev

API - 在内部和外部调用相同的方法

来自分类Dev

调用对象内部的方法

来自分类Dev

在模型内部调用方法

来自分类Dev

万一我们在方法内部调用了私有方法,该如何模拟或准备测试方法?

来自分类Dev

如果我们在componentDidMount内部调用回调函数,如何用componentDidMount替换useEffect?

来自分类Dev

模拟超类方法调用

来自分类Dev

用Moq部分模拟类内部方法

来自分类Dev

模拟对象内部测试方法测试

来自分类Dev

使用Moq部分模拟类内部方法

Related 相关文章

  1. 1

    如何模拟对Junit的内部方法的调用

  2. 2

    Mockito间谍如何模拟内部方法调用?

  3. 3

    模拟内部对象调用

  4. 4

    如何模拟其他方法内部的方法调用返回

  5. 5

    模拟另一个类方法的内部调用

  6. 6

    如何在React-Native中使用访存在ComponentDidMount内部执行多个API调用?

  7. 7

    如何模拟内部调用(xlwt)?

  8. 8

    Grails / Spock:如何在类内部模拟单个方法,而从类本身内部调用方法?

  9. 9

    未从 componentDidMount 方法调用函数

  10. 10

    未调用模拟方法

  11. 11

    如何模拟另一个方法内部调用的方法?

  12. 12

    如何在要使用NUnit测试的方法内部模拟方法调用?

  13. 13

    Mockito:如何模拟另一个方法内部调用的方法

  14. 14

    测试/模拟从视图控制器上的方法内部调用为类方法的UIAlertView

  15. 15

    在方法内部调用方法

  16. 16

    从内部方法调用方法

  17. 17

    闭包内部的模拟方法

  18. 18

    在控制器内部调用时,模拟的DbSet方法将引发NotImplementedException

  19. 19

    用componentDidMount()反应进行api调用

  20. 20

    如何模拟模拟对象的方法调用?

  21. 21

    API - 在内部和外部调用相同的方法

  22. 22

    调用对象内部的方法

  23. 23

    在模型内部调用方法

  24. 24

    万一我们在方法内部调用了私有方法,该如何模拟或准备测试方法?

  25. 25

    如果我们在componentDidMount内部调用回调函数,如何用componentDidMount替换useEffect?

  26. 26

    模拟超类方法调用

  27. 27

    用Moq部分模拟类内部方法

  28. 28

    模拟对象内部测试方法测试

  29. 29

    使用Moq部分模拟类内部方法

热门标签

归档