Использовать издевается .
Ваша функция removeProfile
действительно легко (единично) протестирована, поскольку она имеет практически нулевые внешние зависимости (за исключением ActionCreator
).
Таким образом, вы можете передать поддельные версии auth
, database
и action
. Макет - это функция с той же сигнатурой, что и у оригинала, но она очень проста в использовании.
Существует множество способов проверить сагу, но с такой простой сагой, как ваша, вы можете использовать runSaga , которая, как следует из названия, запускает всю сагу без ручного вызова saga.next(...)
.
Здесь вы можете найти рабочий пример моего теста.
Взгляните на тест, который я написал
const { removeProfile } = require("./remove-profile");
const { runSaga } = require("redux-saga");
test("Mocking the database call", () => {
const removeMock = jest.fn(() => ({
// place here the remove's return value
}));
const databaseMock = {
ref: url => ({
remove: removeMock
})
};
runSaga(
{}, // options
removeProfile, // your saga
// below all the arguments for the saga
null,
databaseMock,
{ user: { uid: "999" } }
);
expect(removeMock).toHaveBeenCalled();
});
Дайте мне знать, если это достаточно ясно 10