javascript中的测试get请求

javascript中的测试get请求,javascript,jestjs,Javascript,Jestjs,我有下一个get请求: const getReq=()=>{ 取回( 'https://api.github.com/repos/javascript-tutorial/en.javascript.info/commits', ) 。然后((响应)=>{ 让status=null; 如果(response.status==200){ 状态=响应。状态; }否则{ 状态='错误'; } 如果(状态===200){ 警报(“成功”) }否则{ 警报('错误') } 返回response.json()

我有下一个get请求:

const getReq=()=>{
取回(
'https://api.github.com/repos/javascript-tutorial/en.javascript.info/commits',
)
。然后((响应)=>{
让status=null;
如果(response.status==200){
状态=响应。状态;
}否则{
状态='错误';
}
如果(状态===200){
警报(“成功”)
}否则{
警报('错误')
}
返回response.json();
})
。然后((提交)=>{
返回commits.map(i=>i.sha[0])
});
};
getReq()
我想对此请求进行3项测试:

  • 如果我从提交中获得第一个
    sha
    I=>I.sha[0]
  • 检查200响应
  • 检查响应是否不是200
  • 我写了我的第一个测试:

    import { getReq } from './getReq';
    
    global.fetch = jest.fn(() => {
      return Promise.resolve(123);
    });
    
    description('success',()=>{
    test('getfirstshahttp',async()=>{
    const sha=wait getReq();
    expect(sha)、toBe(123);
    });
    });
    
    但是我得到了
    TypeError:无法读取未定义的属性“then”


    如何通过上述测试解决问题?

    您的承诺不会被嘲笑。 您可以尝试将其添加到文件顶部

    jest.mock(path_of_getReq_file, () => ({
      getReq: jest.fn()
    }));
    

    为什么在定义它之后立即调用
    getReq
    ?这意味着在替换
    global.fetch
    @jornsharpe之前,在导入时会调用它。它应该是什么样子?您是否尝试过在定义它之后不立即调用
    getReq
    ?@jornsharpe,如何做?如何不调用函数?很难用任何不同的方式来表达:不要调用它。让我知道它是否工作。我得到
    错误:expect(已接收)。toEqual(预期)//deep equality
    ,预期:123已接收:未定义