Я использую ActionSheetProvider
из https://github.com/expo/react-native-action-sheet для моего собственного реактивного проекта.
Вот как я использую его в своем коде:
import { connectActionSheet } from '@expo/react-native-action-sheet';
export default
@connectActionSheet
class MyComponent extends React.Component {
...
<MyCustomIcon onPress={() => this.showMenu(item)}/>
...
showMenu = targetItem => {
this.props.showActionSheetWithOptions(
{
options: ['cancel','rename','hide','delete'],
cancelButtonIndex: 0,
destructiveButtonIndex: 3,
},
index => {
if (index === 3) { //delete item }
}
}
);
};
Это то, что я сделал до сих пор, но я не знаю, как вызвать индекс === 3 в моем тесте:
const showActionSheetWithOptions = jest.fn();
const renderComponent = overrides => {
props = {
showActionSheetWithOptions,
...overrides,
};
return shallow(<MyComponent.wrappedComponent {...props} />);
};
it('should check if delete option is selected', () => {
const wrapper = renderComponent();
const instance = wrapper.instance();
const myIcon = wrapper.find({ testID: 'my-icon' });
const spyShowMenu = jest.spyOn(instance, 'showMenu');
myIcon.props.onPress();
expect(spyShowMenu).toHaveBeenCalled(); // this test passes
// Now that the action sheet has been displayed, how to select delete option?
});
});