如何使用Jest和Redux Saga测试调用api的函数

时间:2019-03-06 04:55:27

标签: javascript react-native react-redux jestjs

我需要开玩笑地测试redux传奇。但这不起作用。这是我尝试过的

service.js

class Login {
    login = async (user: any) => {
        try {
            const response = await axios({
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                },
                url: `${API.BASE_URL}signIn`,
                data: JSON.stringify({
                    LoginID: user.LoginID,
                    Password: user.Password,
                }),
            });
            return Bluebird.resolve(response.data);
        } catch (err) {
            return Bluebird.reject(err);
        }
    }
}

export default new Login();

worker.js

export function* loginWorker(action) {
    try {
        const response = yield call(service.login, action.payload);
        if (response.Success) {
            yield put({type: actionTypes.LOGIN_SUCCESS_ACTION, response});
        } else {
            toastr.showToast(response.Message);
            yield put({type: 'LOGIN_FAILURE', response});
        }
    } catch (err) {
        // dispatch a failure action to the store with the error
        yield put({type: 'LOGIN_FAILURE', err});
        toastr.showToast(err);
    }
}

test.js

describe('test login', () => {
    const action = {
        type: actionTypes.LOGIN_ACTION,
        payload: user,
    };
    it('login', () => {
        const gen = loginWorker(action);
        expect(gen.next().value).toEqual(call(service.login, action.payload));
        expect(gen.next().value).toEqual(put({type: actionTypes.LOGIN_SUCCESS_ACTION, response}));
    });
});

但是无法调用此函数service.login,并且出现此错误

Cannot read property 'Success' of undefined

我哪里错了?请帮助

0 个答案:

没有答案