Как вызвать ComponentDidMount при тестировании с помощью Jest в React - PullRequest
0 голосов
/ 28 мая 2020

У меня есть компонент, в котором ComponentDidMount пытается вызвать функцию API.

componentDidMount(){

   this.getTypes(this.props.user).then(Response => {this.setState({List: Response.Types })});

  }

async getTypes(userLogin){
    try{
      res = await API.get(......... );
      } 
    catch(error) {
       ....
       }
}

Теперь я хочу вызвать componentDidMount и getTypes и имитирую API.get.

Итак для этого может кто-нибудь сказать мне, как вызвать как componentDidMount, так и getTypes с помощью Jest?

EDIT: Пытался сделать таким образом. Но я вижу, что он не вызывает ComponentDidMount.

 it('renders ComponentDidMount',  () => {
               const wrapper = shallow(<HoldVendor region={"aaa"} applier={"xxx"} />);
               API.get = jest.fn().mockImplementation(
                () => {                                                      
                       return {"Types": [{}]};
               });

 expect(API.get).toHaveBeenCalled();
});

1 Ответ

0 голосов
/ 28 мая 2020

используйте Фермент для проверки компонентов ur.

В тестах поверхностный рендеринг вашего компонента как

shallow(<ComponentName {...props} />)

, это автоматически вызовет componentDidMount.

Теперь, чтобы смоделировать вызов api, вы можете использовать nock или даже смоделировать весь метод Api.get перед визуализацией компонента в ваших тестах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...