Вот мой компонент реакции:
import { sendAnalytics } from 'analytics';
class MyComponent extends React.Component {
myMethod() {
console.log('do something!');
}
render() {
return (
<Button
onClick={submitAnalytics({name: 'foo'}).finally(this.myMethod())}
dataset={{"data-id": "button"}}
> Send Analytics
</Button>
}
)
}
}
И мой тест выглядит так:
import * as analytics from 'analytics';
jest.mock('analytics');
describe('Analytics', () => {
it('Should call analytics when button is clicked', () => {
analytics.submitAnalytics.mockResolvedValue(Promise.resolve(true));
const tree = ReactTestRenderer.create(<MyComponent />);
// Actual implementation of following 3 lines is slightly different.
const button = tree.root.findByProps({"data-id": "button"});
button.props.onClick();
expect(analytics.submitAnalytics).toHaveBeenCalled();
});
});
Я пробовал несколько разных стратегий насмешек, таких как:
analytics.submitAnalytics.mockImplementation(() => {
return Promise.resolve(true)
});
Ничего не получается. Я продолжаю получать следующую ошибку:
TypeError: (0 , analytics.submitAnalytics)(...).finally is not a function
.
Не знаю почему. Любая помощь приветствуется.
Пожалуйста, дайте мне знать, если вам нужно больше контекстного кода.