include () и toLowerCase не выдает ошибку функции из jest unit test - PullRequest
0 голосов
/ 10 июля 2020

MyComponent. js имеет значение toLowerCase и включается в реквизиты. При модульном тестировании MyComponent я получаю toLowerCase, а includes () не является функцией.

MyComponent. js

this.props.currentUser.role.toLowerCase().includes('admin')

MyComponent.test. js

    mount(<Provider store={store}>
        <MyComponent />
      </Provider>);
  });

Ошибка:

TypeError: this.props.currentUser.role.toLowerCase is not a function 
TypeError: this.props.currentUser.role.includes is not a function

Ответы [ 3 ]

2 голосов
/ 10 июля 2020

Вы должны передать объект currentUser как опору компоненту.

let user ={role:"test"}
mount(<Provider store={store}>
        <MyComponent currentUser={user}/>
      </Provider>);
});
0 голосов
/ 10 июля 2020

Сначала проверьте, существует ли значение и если роль является строкой, затем примените некоторые функции

this.props.currentUser && this.props.currentUser.role &&
this.props.currentUser.role.toString().toLowerCase().includes('admin') ? 'Yes included' or 'Not'

Будьте осторожны, если вы использовали toLowerCase () функцию, не сравнивайте с Admin сравнить с admin

0 голосов
/ 10 июля 2020

.toLowerCase() и .include() работают только со строками. Убедитесь, что параметр, который вы передаете реквизитам, является строкой. В вашем коде вы не передаете никаких реквизитов, поэтому в основном вы пытаетесь выполнить эти функции для неопределенного типа. Попробуйте вместо этого:

mount(<Provider store={store}>
        <MyComponent currentUser={user}/> //Specify 'user' before
      </Provider>);
...