Javascript 使用Jest测试Saga生成器函数

Javascript 使用Jest测试Saga生成器函数,javascript,unit-testing,jestjs,redux-saga,Javascript,Unit Testing,Jestjs,Redux Saga,我试图使用Jest为这个生成器函数logOffSaga编写单元测试。我试了好几种方法,但都找不到一个合适的方法来处理这个承诺。有人能帮我解决这个问题吗 export function abcFunction() { return api(EndPoints.CONTROLS) .post('logoff') .then(response => ({ response })) .catch(error => ({ error })); } export f

我试图使用Jest为这个生成器函数
logOffSaga
编写单元测试。我试了好几种方法,但都找不到一个合适的方法来处理这个承诺。有人能帮我解决这个问题吗

export function abcFunction() {
  return api(EndPoints.CONTROLS)
    .post('logoff')
    .then(response => ({ response }))
    .catch(error => ({ error }));
}

export function* logOffSaga() {
  yield take(LOGOFF);
  const { response, error } = yield abcFunction();

  if (response && response.status === ResponseCodes.OK) {
    yield something();
  } else if (error) {
    yield somethingElse();
  }
}
单元测试:

  const genlogOffSaga = logOffSaga();

  it('should wait for LOGOFF', () => {
    expect(genlogOffSaga.next().value).toEqual(take(LOGOFF));
  });

如何根据
abc函数的返回值测试其余代码?

请显示注销操作。
测试这一点会更加清楚。注销是您正在执行的操作吗?

请显示注销操作。
测试这一点会更加清楚。注销是您正在执行的操作吗?

例如,使用Jasmine的spies,您可以在api.post()方法上创建一个spy对象,并返回一个立即解决的承诺。更多信息:谢谢,但我想用笑话。对不起,我的坏!Jest也有类似的功能,他们称之为mocking:文档中有一节是关于它的。请看@GabrielePetrioli谢谢,伙计,但他们正在使用磁带。我想从Jest获得它。例如,使用Jasmine的spies,您可以在api.post()方法上创建一个spy对象,并返回一个立即解决的承诺。更多信息:谢谢,但我想用笑话。对不起,我的坏!Jest也有类似的功能,他们称之为mocking:文档中有一节是关于它的。请看@GabrielePetrioli谢谢,伙计,但他们正在使用磁带。我想从Jest.import{LOGOFF}从'/Types'导入它;导出函数Logoff(){return{type:Logoff,payload:null};}const action='Logoff';它('应该等待注销',()=>{expect(genlogOffSaga.next(action.value).toEqual(take(LOGOFF));});从“./Types”导入{LOGOFF};导出函数Logoff(){return{type:Logoff,payload:null};}const action='Logoff';它('应该等待注销',()=>{expect(genlogOffSaga.next(action.value).toEqual(take(LOGOFF));});