В моей саге у меня есть этот код:
export function* removeProfile(auth, database, action){
try{
const url = `/users/${action.user.uid}`
const {ref} = database
const result = yield call([database, ref], url)
const {remove} = database.ref()
yield call([result, remove])
const deleteFunction = () => action.user.delete()
yield call([action.user, deleteFunction])
//yield action.user.delete() && database.ref(url).remove()
yield put(ActionCreator.removeProfileSuccess())
yield destroyAuth(auth)
}catch({message}){
yield put(ActionCreator.removeProfileFailure(message))
}
}
И в моем тесте у меня есть это:
describe('should test removeProfile', () => {
const actionMock = {
user: {
uid: undefined,
delete : jest.fn()
}
}
const deleteFunction = () => actionMock.user.delete()
const url = `/users/${actionMock.user.uid}`
const databaseMock = {
ref: jest.fn()
}
const {ref} = databaseMock
const removeFunction = () => databaseMock.ref
const authMock = {
delete: jest.fn()
}
const it = sagaHelper(removeProfile(authMock, databaseMock, actionMock))
it('should call api ref and remove from database', result => {
let newResult = ''
expect(result).toEqual(newResult = call([databaseMock, ref], url))
expect(newResult).toEqual(call([newResult, removeFunction]))
})
it('should call api delete user from authentication', result => {
expect(JSON.stringify(result)).toEqual(JSON.stringify(call([actionMock.user, deleteFunction])))
})
it('should put removeProfileSuccess', result => {
expect(result).toEqual(put(ActionCreator.removeProfileSuccess()))
})
})
Мне нужно принять значение в let newResult = ''
моего теста и передать другому, равному для завершения, мой тест "должен вызвать api ref и удалить из базы данных". Но то, как я это сделал, не работает. Как передать результат от одного ожидания другому вызову, который выполняет новый вызов с использованием этого значения? let newResult = '' expect(result).toEqual(newResult = call([databaseMock, ref], url))
expect(newResult).toEqual(call([newResult, removeFunction]))