为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Angular 中的 httpClient 调用中生成错误?

如何在 Angular 中的 httpClient 调用中生成错误?

潇湘沐 2023-07-06 16:51:36
我的 Angular 应用程序中有以下搜索功能的方法,我想测试错误部分。但是,它不会命中错误块。和订阅有关系吗?或者我应该使用什么方法或途径?this.searchGetCall(text).subscribe((res) => {    res = undefined; //test: added to create error    console.log('res', res.constructor());    this.isSearching = false;    this.apiResponse = res;  }, (err) => {    debugger; //cannot hit this block    this.isSearching = false;    console.log('error', err);  });searchGetCall(term: string) {  if (term === '') {    return of([]);  }  return this.httpClient.get('http://www.omdbapi.com/?s=' + term + '&apikey=' + APIKEY, { params: PARAMS.set('search', term) });}
查看完整描述

3 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

据我了解,您想在 'res = undefined; 行抛出异常;//测试:添加以创建错误'。为此目的使用 try catch。(err) 块用于处理 http 错误。例如,在 C# 中,在操作结果中键入以下内容:


   [HttpGet("Get/{id}")]

    public async Task<ActionResult<UserDto>> Get(long id)

    {            

        ServiceResult<IEnumerable<UserBo>> result = await serviceManager.User_Service.FindAsync(filterCriteria);

        if (result.Success)

        {

            userBo = result.Data.FirstOrDefault();

            if (userBo == null)

                return NotFound();

            else

            {

                ServiceResult<bool> resultAutorized = await GetAutorizedUserStatusById(userBo);

                if (!resultAutorized.Success || !resultAutorized.Data)

                    return BadRequest("unauthorized access");

            }


            UserDto userDto = UserBo.ConvertToDto(userBo);


            return userDto;

        }

        else

        {

            return BadRequest(result.Error);

        }

                           .FirstOrDefaultAsync();

    }

注意这一行: return BadRequest("未经授权的访问");


查看完整回答
反对 回复 2023-07-06
?
HUH函数

TA贡献1836条经验 获得超4个赞

这不像try/catch。订阅错误块的到达取决于 HTTP 代码状态(403,404,500 等),而不是脚本执行错误。您的测试只是使脚本崩溃,而不是模拟 HTTP 错误代码。



查看完整回答
反对 回复 2023-07-06
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

我假设您的 searchGetCall 是一个网络请求,并且它返回一个可观察值。当您的 Web 请求返回 http 状态代码错误时,您的错误块将被执行。



查看完整回答
反对 回复 2023-07-06
  • 3 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信