问题标签 [httptestingcontroller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
632 浏览

angular - 包含 HTTP 订阅的服务方法的测试用例 - Angular HTTP RxJs

我有一个服务方法,它有一个服务调用(HTTP 调用),它立即订阅,并根据响应代码执行其余的操作命令。

示例:服务方法

我尝试了以下示例(测试用例)

请帮助我如何处理这种情况。

0 投票
1 回答
105 浏览

angular - Angular 8 Jasmine 不匹配 HTTP 请求

我有一个 Angular 服务发出一些 HTTP 请求,我想测试它是否使它们以正确的方式。

在它的依赖项中,它还有一个EnvironmentService根据环境返回正确的 API 端点,我用 Jasmine 模拟过。

我的测试如下所示:

这是我的ShipmentsService方法:

我错过了什么?

0 投票
1 回答
570 浏览

angular - Angular 单元测试 - 在 HttpInterceptor 中测试 retryWhen

我正在尝试在 http 拦截器中测试 retryWhen 运算符,但是在尝试多次重复我的服务调用时出现错误:

“错误:需要一个对条件“匹配 URL:http://someurl/tesdata ”的匹配请求,但没有找到。”

所以我有2个问题。首先,我是否要以正确的方式进行测试,其次,为什么我不能在没有匹配错误的情况下发出多个服务请求?

我的拦截器工作正常,并且正在使用 rxjs retryWhen 运算符,例如:

我的测试服务:

我的规格:

0 投票
2 回答
1435 浏览

angular - 如何在 Angular 中测试 http 请求参数?

我正在尝试在发出 http 请求时测试 http 参数是否正确。

当我做expect(req.request.params.get('action')).toEqual('pause');测试失败时:

预期:“暂停”收到:空

服务

测试

任何想法为什么会发生这种情况?

我在这个测试中使用 Angular 和 Jest 和 TestBed。

0 投票
0 回答
330 浏览

angular - 测试 http 错误作为响应时,Jasmine 单元测试请求不会刷新

我正在尝试使用 HttpTestingController 刷新带有 http 400 错误的响应。然而,它似乎永远不会被刷新,因为订阅的委托永远不会被调用。
记录请求对象的 _cancelled 属性表明返回 400 的 http 错误导致 _cancelled 属性设置为 true。我希望将错误响应传递给服务方法,以便可以测试它对 http 错误代码的处理。

考试:

正在测试的服务中的功能:

0 投票
1 回答
1677 浏览

angular - 如何在 Angular 的管道中测试多个请求?

我想测试在管道内完成的 3 个请求。简化示例:

我正在使用官方推荐: HttpTestingController。如果我一个接一个地用httpTestingController.match. 但是,这不是我真正的应用程序的编写方式。它正在使用管道。

如何使 httpTestingController.match 在管道内处理多个 HTTP 请求?

这是我迄今为止尝试过的,这里是可重现的例子

https://stackblitz.com/edit/angular-http-testing2?file=src%2Ftesting%2Fhttp-client.spec.ts

0 投票
0 回答
91 浏览

angular - 使用 Bootstrap 指令时,HttpTestingController expectOne 不起作用

当我模仿对 Bootstrap 指令生成的元素的单击时,我无法在单元测试中模拟 HTTP 请求。

在这里,我有一个带有分页链接的组件。

而且我还进行了测试以验证 HTTP 调用。测试总是失败。

当我直接使用由指令生成的 HTML 时,一切都很好。

0 投票
0 回答
79 浏览

angular - 如何在可观察流的测试中模拟 Angular HttpClient 响应?

我有一个最终触发对 Angular HttpClient 的调用的 observable。我需要模拟来自 HttpClient 的响应,但是我不知道如何在 TestScheduler 运行方法的上下文中执行它。假设我有以下测试:

transferObservable级联时发出的值switchMap调用服务,该服务又通过 Angular HttpClient 发送 GET 请求;结果值是从 发出的sut.data$

我尝试在 scheduler.run 方法内外的不同位置放置以下行,但我总是得到相同的错误:Expected one matching request for criteria "Match URL: http://foo", found none.

大致在哪里以及如何模拟单个调用http://foo并刷新expectedData为所需的响应?

编辑精简beforeEach设置,显示以下配置HttpTestingController

编辑 2:调试时我的服务中的 HttpClient 实例的屏幕截图。

在此处输入图像描述

编辑 3: Stackblitz 在这里发布。失败的测试contract$ should return contract是令人感兴趣的。