Проблема тестирования саг с внедрением зависимостей после рефакторинга - PullRequest
0 голосов
/ 10 января 2019

Добрый вечер У меня проблемы с проверкой саги после рефатореи, исходный формат был такой.

export function* getUser(axios){
    try {
        const user = yield call(axios.get, 'http://')
        if(user.data.error){
            return yield put(ActionsCreators.getUserFailure(user.data.message))
        }
        yield put(ActionsCreators.getUserSuccess(user.data.data))
    } catch (error) {
        yield put(ActionsCreators.getUserFailure(error.message))
    }
}

Тест redux-saga-testing выглядел следующим образом.

test('with redux saga testing', () => {
    const axiosMock = {
        get: jest.fn()
    }
    const it = sagaHelper(getUser(axiosMock))
    it('should return ', result => {
        expect(result).toEqual(call(axiosMock.get, 'http://'))
    })
})

Затем я произвел рефакторинг для этого формата.

service.js

import axios from 'axios'

const Api = base => {
    const client = axios.create({
        baseURL: base
    })
    const getAuthHeader = () => {
        const token = localStorage.getItem('token')
        return {
            headers: {
                Authorization: 'Bearer '+token
            }
        }
    }
    const get = (endpoint) => client.get(endpoint, getAuthHeader())    
    return {
        auth: () => get('api/current')
    }        
}
export default Api

rootSaga

import Api from '../services/API'
import { getUser } from './auth'
const api = new Api(baseURL)    
yield all([
    takeLatest(Types.GET_USER_REQUEST, getUser({ api }))
])

сага

export const getUser = ({ api }) => function*(){
    try {
        const user = yield call(api.auth)
        if(user.data.error){
            return yield put(ActionsCreators.getUserFailure(user.data.message))
        }
        yield put(ActionsCreators.getUserSuccess(user.data.data))
    } catch (error) {
        yield put(ActionsCreators.getUserFailure(error.message))
    }
}

В той форме, в которой она есть, я делаю инъекцию api в getuser, и вызов получает api и вызывает сервис, в этот момент я больше не могу тестировать свою сагу, я хотел бы проверить, вызывает ли api вызов правильный URL, но я не знаю, как этого ожидать, уже проверено макет и API и ввести в getuser, но безуспешно. Может ли кто-нибудь дать мне краткий обзор того, как выполнить сага-тест с такой зависимостью от инъекций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...