Ich habe eine Komponente namens App und innerhalb dieser Komponente habe ich eine Methode namens fetchContent
. Diese Methode wird in meiner componentWillMount-Methode aufgerufen, und ich versuche zu überprüfen, ob sie tatsächlich beim Mounten meiner Komponente aufgerufen wird. Im Folgenden finden Sie meine Methode:Nicht in der Lage ComponentWillMount ComponentWillMount Komponente Methode zu testen
export default class App extends Component {
fetchContent = (current) => {
...do some stuff in here
}
componentWillMount() {
this.fetchContent('techcrunch');
}
Wie Sie sehen, ich bin mit einem Pfeil Funktion, anstatt es auf die Komponente in meinem Konstruktor zu binden. Ich muss es binden, weil es auch eine Methode ist, die für ein Klickereignis aufgerufen wird.
Allerdings, wenn ich versuche, meinen Unit-Test in dieser Komponente zu laufen, kann ich nicht meinen Spion/Stub bekommen, zu arbeiten, weil es einen Fehler wirft sagen:
TypeError: Attempted to wrap undefined property fetchContent as function
Unter meiner Einheit ist test:
it('should fetch the content when component mounts',() => {
sinon.spy(App.prototype, 'fetchContent');
wrapper = mount(<App />);
expect(wrapper.instance().fetchContent).to.have.been.calledOnce;
});
Wenn meine Methode jedoch nicht gebunden ist oder keine Pfeilfunktion verwendet, funktioniert es einwandfrei.
Irgendwelche Ideen, wie man es erreicht?
Sie können 'jest.fn()' verwenden, um die Komponentenmethode zu überspielen und dann zu überprüfen, ob die mokierte Funktion aufgerufen wird oder nicht. –