Ich habe eine Aktion addItemsToCollection
genannt, die wie so ein Aufruf an eine API löst:Wie können Redux-Aktionen getestet werden, die 'redux-api-middleware' und [CALL_API] verwenden?
import {CALL_API} from 'redux-api-middleware';
export function addItemsToCollection(collectionId, itemIds)
{
return {[CALL_API]:
{
endpoint: `/collections/${collectionId}/items`,
method: 'POST',
body: JSON.stringify(itemIds),
types:
[
ADD_ITEMS,
{ type: ADD_ITEMS_SUCCESS },
ADD_ITEMS_FAIL
]
}
};
}
Wenn ich versuche, einen Test einfach für diese Aktion zu schreiben wird erstellt, wie:
it('should create an action to add items to a collection',() =>
{
const collectionId = 1;
const itemIds = [1,2,3];
const expectedAction =
{
[CALL_API]:
{
endpoint: `/collections/${collectionId}/items`,
method: 'POST',
body: JSON.stringify(itemIds),
types:
[
ADD_ITEMS,
{ type: ADD_ITEMS_SUCCESS },
ADD_ITEMS_FAIL
]
}
};
expect(addItemsToCollection(collectionId, itemIds)).toEqual(expectedAction);
});
Es tut übergeben, aber das liegt daran, dass es das zurückgegebene und leere Objekt {} sowohl für expectAction als auch für die Aktion Creator-Funktion zurückgibt. Nicht viel nutzen.
Also meine Fragen sind,
Warum sind leer Objekte zurückgegeben werden?
Was ist der richtige Weg, um diesen Test zu machen?