У меня есть компонент LandingScreen
, который содержит функцию onPositivePermission
. В этой функции я вызываю stati c метод входа из моего FacebookConnector
. Я хочу проверить, что метод входа действительно вызывается в onPositivePermission
. Я пробовал разные тесты, но ни один из них не работает. Мои компоненты следующие:
LandingScreen
class LandingScreen extends Component {
constructor(props) {
super(props);
this.loginMethods = {
fbLogin: 0,
emailLogin: 1,
}
}
onPositivePermission = loginMethod => {
if (loginMethod === this.loginMethods.fbLogin)
{ FacebookConnector.login();
}
};
FacebookConnector
export default class FacebookConnector {
static login = async() => {
try { const result = await LoginManager.logInWithPermissions([ 'public_profile', 'email', ]);
if (result.isCancelled) {
//do nothing, the user cancelled
} else {
//handle Facebook login }
} catch (error) {
//handle error
}
};
А это мой тест:
it('Calls the Facebook login method', () => {
const fbLogin = 0;
const landingScreen = renderer.create(<LandingScreen />).getInstance();
let loginMock = jest.fn();
jest.mock('../../connectors/Facebook/FacebookConnector', () => ({
default: class {
static login() {
mock.loginMock;
}
},
}));
landingScreen.onPositivePermission(fbLogin);
expect(loginMock).toHaveBeenCalled();
});
Я тоже пробовал смоделировать FacebookConnector следующим образом:
jest.mock('../../connectors/Facebook/FacebookConnector', () => ({
login: mock.loginMock,
}));
Однако в обоих случаях я получаю:
expect(jest.fn()).toHaveBeenCalled()
Expected number of calls: >= 1
Received number of calls: 0
Я добавил журналы в свою функцию onPositivePermission()
и увидел, что она действительно вызывается тест, но, тем не менее, оператор wait не выполняется.
Я также попытался удалить оператор if в onPositivePermission();
continue, все равно не удается.
Обратите внимание, что я тестировал эту функциональность вручную и FacebookConnector.login()
вызывается , но я также хочу провести его модульное тестирование.
Кто-нибудь знает, почему не работает модульный тест?