Мне нужно использовать возврат одного ожидаемого (). Равный () в другом - PullRequest
0 голосов
/ 19 января 2019

В моей саге у меня есть этот код:

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]))

...