Wie testet man Async-Redux-Aktionen, um eine Ajax-Antwort nachzuahmen?

8

Ich erstelle eine Middleware, um Ajax-Anfragen mit asynchronen Aktionen auszuführen. Die Middleware fängt die ursprüngliche Aktion ab, führt eine AJAX-Anforderung aus und setzt die ursprüngliche Aktion zusammen mit der Antwort von dispatch wieder her.

Also, meine Komponente würde nur url eine Aktion wie diese

%Vor%

Der Rest wird von der Middleware übernommen, wie in hier .

Meine Frage ist, was soll ich für Komponententests tun? Sollte ich das dispatch selbst verspotten? oder sollte ich eine verspottete Middleware schreiben und die Aktionen mit der verspotteten Antwort weiterleiten?

Ich bin mir nicht sicher, welchen Ansatz ich nehmen soll. Ich habe mehrere Sachen ausprobiert, aber nichts von dem, was ich versucht habe, ergab für mich Sinn.

Irgendwelche Zeiger?

    
Салман 08.10.2015, 09:26
quelle

2 Antworten

24

Hinweis: Die Antwort unten ist etwas veraltet.

Ein viel einfacherer aktualisierter Ansatz wird hier beschrieben.
Du kannst es aber auch immer anders machen.

Wir haben jetzt einen Abschnitt zum Testen von asynchronen Aktions-Erstellern im offiziellen Bereich Dokumente.

Für Async-Action-Ersteller, die Redux Thunk oder andere Middleware verwenden, empfiehlt es sich, den Redux-Store für Tests vollständig zu testen. Sie können applyMiddleware() immer noch mit einem Scheinspeicher verwenden, wie unten gezeigt. Sie können auch nock verwenden, um die HTTP-Anfragen nachzuahmen.

%Vor%

kann wie folgt getestet werden:

%Vor%     
Dan Abramov 10.10.2015, 11:28
quelle
2

Stellt sich heraus, ich muss keine Speichermethoden oder irgendetwas verspotten. Es ist so einfach wie die Ajax-Anfrage zu verspotten. Ich verwende superagent , also habe ich es so gemacht

%Vor%     
Салман 08.10.2015 11:34
quelle

Tags und Links