这是一个简单的api调用。
api
cmbBox.DataSource = new BindingSource(comboSource , null);
cmbBox.DisplayMember = "Value";
cmbBox.ValueMember = "Key";
此api调用在redux-saga函数中使用。
Redux-saga
import axios from 'axios';
export default {
json: {
getData: () => axios.get('https://jsonplaceholder.typicode.com/todos').then(res => res.data.slice(0, 5)),
},
};
我将如何测试此功能。我看过一些指南,但是我并没有偶然发现不复杂的单元测试。
到目前为止,这是我的单元测试,这是我得到的结果。
redux-saga单元测试
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);
}
答案 0 :(得分:1)
您可以像这样简单地进行操作,如果您有任何要传递给生成器函数的参数,则可以。
转到下一个声明,您只需要继续编写generator.next()
。
下一个可能对您来说是动作fetchDataSuccess
。
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 = fetchDataSuccess();
expect(generator.next()).to.equal(yourApiResponse);
})
})