首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试具有api调用的redux-saga函数

测试具有api调用的redux-saga函数
EN

Stack Overflow用户
提问于 2019-07-22 16:04:15
回答 1查看 460关注 0票数 1

下面是一个简单的api调用。

api

代码语言:javascript
复制
import axios from 'axios';   
export default {
  json: {
    getData: () => axios.get('https://jsonplaceholder.typicode.com/todos').then(res => res.data.slice(0, 5)),
  },
};

此api调用在这里用于redux-saga函数。

Redux-saga

代码语言:javascript
复制
import {
  put, fork, takeLatest, call,
} from 'redux-saga/effects';
import { GET_DATA_SAGA } from '../actions/types';
import api from '../api';
import { fetchDataSuccess, fetchDataError } from '../actions/dataActions';

export function* getData() {
  try {
    const data = yield call(api.json.getData);

    console.log(data);

    yield put(fetchDataSuccess(data));
  } catch (err) {
    yield put(fetchDataError(err));
  }
}

export function* watchData() {
  yield takeLatest(GET_DATA_SAGA, getData);
}

export default function* () {
  yield fork(watchData);
}

我怎样才能测试这个函数。我看到了一些指南,但我并没有偶然发现一个不复杂的单元测试。

到目前为止,这是我的单元测试,这是我得到的结果。

redux-saga单元测试

代码语言:javascript
复制
import {put, fork, takeLatest, call} from 'redux-saga/effects';
import axios from 'axios';
import { GET_DATA_SAGA } from '../actions/types';
import {expectSaga} from 'redux-saga-test-plan';
import { fetchDataSuccess, fetchDataError } from '../actions/dataActions';
import api from '../api';

import {getData} from './data';

it('testing api call', () => {

    return expectSaga(api.json.getData)
})
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-22 16:13:00

如果您有任何参数要传递给您的生成器函数,您可以这样做。要进入下一个声明,您只需继续编写generator.next()。对你来说,下一个可能是动作fetchDataSuccess

代码语言:javascript
复制
import {put, fork, takeLatest, call} from 'redux-saga/effects';
import axios from 'axios';
import { GET_DATA_SAGA } from '../actions/types';
import {expectSaga} from 'redux-saga-test-plan';
import { fetchDataSuccess, fetchDataError } from '../actions/dataActions';
import api from '../api';

import {getData} from './data';

describe('My feature', () => {
  it('testing api call', () => {
    const generator = getData();
    expect(generator.next()).to.equal(yourApiResponse);
  })
})

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57149835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档