当前位置: 首页 > 面试题库 >

模拟$ httpBackend-如何处理“意外的请求,没有更多的请求”?

江展
2023-03-14
问题内容

我有一个茉莉花测试,其编码如下:

  it ("should send correct message to server to get data, and correctly set up scope when receiving it", function(){
    $httpBackend.when('GET', 'https://localhost:44300/api/projectconfiguration/12').respond(fakedDtoBase);
    $routeParams.projectId=fakeId; // user asks for editing project
    scope.$apply(function(){
        var controller=controllerToTest(); // so controller gets data when it is created
    });
    expect(scope.projectData).toEqual(fakedDtoBase);
});

确实可行,但出现错误:

Error: Unexpected request: GET views/core/main/main.html
No more request expected
    at $httpBackend (C:/SVN/src/ClientApp/client/bower_components/angular-mocks/angular-mocks.js:1207:9)
    at sendReq (C:/SVN/src/ClientApp/client/bower_components/angular/angular.js:7800:9)
    at $http.serverRequest (C:/SVN/src/ClientApp/client/bower_components/angular/angular.js:7534:16)
    (more stack trace)....

我确实意识到我可以嘲笑其他所有电话。但是,可以说我不在乎我的测试还要加载什么,因为它可能会调用其他一些东西。我如何确保其他所有请求只是“默默发生”,也许对其他所有请求都提供一个虚拟响应?


问题答案:

测试失败,因为发出了您未指定的请求。

尝试添加

$httpBackend.when('GET', 'views/core/main/main.html').respond(fakedMainResponse);

当然,您还应该定义fakedMainResponse

另请参阅文档(“要求期望与后端定义”部分),其中说:

请求期望提供了一种对应用程序提出的请求进行断言并定义这些请求的响应的方法。 如果未发出预期的请求或发出的请求顺序错误,则测试将失败。

的第二个参数$httpBackend.when实际上是RegExp。因此,如果您提供的RegExp内容将与所有其他请求匹配,那么它应该可以正常工作。



 类似资料:
  • 问题内容: 我的范围内有一个函数可以在用户单击按钮或触发某些事件并自动调用此函数时检索我的服务状态。 这是我的功能,在我使用的控制器中定义: 单元测试如下: 在单元测试中,我还在同一个控制器上进行了其他$ httpBackend测试,但是所有这些仅能正常工作。我究竟做错了什么? 问题答案: 您需要 在 调用方法 之前 提供。 设置请求的期望,然后触发请求。 希望这可以帮助。

  • 问题内容: 看来这是有效的解决方案,显示了如何使用 http://jsfiddle.net/EgMpe/8/ 但就我而言: 路线 … 伪造的服务: .. 真实服务: 转到将我重定向到页面的“ /”路由时出现 错误: 错误:意外请求:GETpartials / user-list.html在$ httpBackend … / mysite / public / angular / libs / an

  • 我在JUnit中使用Mockito,并且我有一个使用RestTemboard向微服务发出请求的方法。 此方法返回一个JSON对象,该对象将在TokenRequestorPayload类中反序列化。 当我执行单元测试时,它们会失败,因为mock不起作用,我得到了一个org.springframework.web.client.ResourceAccessExcure。我怎么能嘲笑我的RestTem板

  • 我正在使用OkHttpClient向网站的网页url发送请求,并通过以下方法存储它提供的cookie,我仅从stackoverflow获得该方法。 有必要存储cookie,否则网站会将请求重定向到超时页面。 然后,我看到页面的html来检查我是否到达了正确的网址。 现在,我以类似于网址“www.example.com/loginPage”的方式制作另一个请求变量,并尝试查看html,但它将我重定向

  • 问题内容: 我正在制作一个Java Servlet页面,该页面检查域名列表,并通过jquery ajax请求检查每个名称。它的工作正常,除非结果被无序附加到DOM。什么是按请求的顺序处理请求的最佳方法,但是又像长时间轮询一样异步进行。我是javascript新手。 这是我用于请求的代码: 我当时正在考虑向Java Servlet发送一个序列号,该序列号将通过JSON返回,但是我想知道是否有更简单的

  • 问题内容: 我试图打开登录页面(GET),获取网络服务器提供的cookie,然后提交用户名和密码对以登录网站(POST)。 看着这个Stackoverflow问题/答案,我认为我会做以下事情: 但是,标头中有一个,但该对象中没有改变。实际上,链接问题的回答将表明没有内容被填充。 我在代码中通过使用标头字典来解决此问题,并在执行GET或POST之后使用此标头处理: 然后在请求方法中传递标头。这是正确