首页 > 解决方案 > $.ajax 的 Jest 单位覆盖率

问题描述

我想$.ajax在我的反应方法中使用 jest 和酶来测试单位覆盖率。

$.ajax({
      url: `url`,
      type: "GET"
    }).done(data => {
        //dosomething
      }).fail(err => {
       //do something else
      });

我如何模拟$.ajax以涵盖成功和错误部分的测试?

标签: jqueryreactjsunit-testingjestjsenzyme

解决方案


以下代码适用于模拟 ajax 响应(完成和失败案例)-jest 测试用例@abbas ali:P

let  response={"rows":[{"dlvDate":"03/13/2020","sts":"SC","}],"errorMessage":null,"count":null,"data":null,"result":true};

let ajax_response_sucess=(response)=> {
  var deferred = $.Deferred().resolve(response);
  return deferred.promise();
}

let ajax_response_fail=(response)=> {
  var deferred = $.Deferred().reject(response);
  return deferred.promise();
}

  it("test for callModalService function", () => {
$.ajax=jest.fn=()=>{return ajax_response_sucess(response)}; 
wrapper.instance().callModalService()//call the function,which makes Api call

$.ajax=()=>{return ajax_response_fail(response)}; 
//call the function which makes Api call
 wrapper.instance().callModalService()
})

推荐阅读