问题标签 [angular-mock]

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 回答
1152 浏览

angularjs - Angular.mock.$interval.flush() 抛出奇怪的异常

我创建了以下小控制器,用于测试间隔函数是否在指定间隔触发

规格:

茉莉花抛出以下错误:

对我来说,看起来我们收到了一个错误,将应用程序重定向到登录页面,但根据我们的代码,我无法理解为什么会发生这种情况?如果我使用flush < 10,它将在最后一个期望语句中按预期失败。

有谁知道在这种情况下发生了什么或我们做错了什么?

0 投票
2 回答
501 浏览

javascript - 如何在 AngularJS 中动态注入整个模块?

好的,所以我正在尝试设置 $httpBackend 以用作针对 API 进行本地开发的模拟服务器。我在不同的模块中有两个服务:search 和 searchMock:

  • search 返回一个 $resource 对象,该对象在登台或生产环境中公开 API 动词,并按预期工作
  • searchMock 暴露了 $httpBackend ,它反过来用模拟 JSON 对象响应,并按预期工作

我有另一个服务 APIInjector,它根据 Grunt 在构建应用程序时动态包含的配置文件确定当前环境是什么,并相应地注入 search 或 searchMock。

我的问题是,据我从高低搜索中可以看出,$httpBackend 需要在模块的 run 方法中设置。问题是我无法在 APIInjector 的条件逻辑中注入 run 方法。

如果满足开发环境条件,我如何公开 $httpBackend ,否则我的 $resource 服务?请注意,我没有包括调用控制器或 searchService 的代码,但如果需要澄清,我可以。

搜索模拟:

API注射器:

0 投票
1 回答
304 浏览

angularjs - 如何使用 Angular 和 Jasmine + $resource 编写行为/功能/端点测试?

我想编写服务器端点的功能测试。我不做 e2e 测试。这更像是一种功能/行为测试。

但是,茉莉花会产生此错误:

不想用 来模拟它httpBackend.whenGET(),我想实际测试我的端点是否存在不良行为(也就是责怪后端团队)。我模拟响应的单元测试是一个单独的规范文件。

有什么办法可以用茉莉花来做到这一点?我不想也必须添加量角器或摩卡咖啡。

0 投票
1 回答
1307 浏览

javascript - 角度资源承诺捕获,茉莉花 toThrow()

我在角度控制器中有一些代码:

user 是一个角度 $resource ,它在调用 get 方法时返回一个承诺。

我正在尝试用茉莉花测试它是否会引发错误,如下所示:

但是会抛出这个错误:

预期函数抛出异常。

我已经测试了对承诺的接受,它按预期工作,但我假设存在一些我无法处理的异步方面。

我也尝试过调用 pass in 并调用 done() 但这也不起作用。

编辑:

我像这样嘲笑我的后端:

请注意,我的其他测试确实有效,我尝试了服务器返回 200 和用户并且一切正常的其他场景。我正在专门测试 $scope.login() 在收到服务器错误时是否抛出错误。

0 投票
3 回答
629 浏览

javascript - AngularJS:$httpBackend.when() 使用 url 的方法

我正在尝试根据angular docs为 e2e 测试目的设置和模拟 $httpBackEnd 。当我请求模板时,我想通过所有请求。从文档中,它说url参数可以是三种类型string function(string)或其RegExp描述:

HTTP url 或接收 url 并在 url 与当前定义匹配时返回 true 的函数。

我正在尝试做的事情

我希望所有direct/views/....GETpub/views/....请求PassThrough()

我试过的

放置字符串有效,尝试使用该函数无效。

RegExp 可能是最快的方法,但我对此一无所知。如果您想给我一个有效的 RegExp,我将永远感激不尽。

我知道我的isTemplateUrl函数并不完全符合我的要求,但除此之外,它应该仍然适用于这两个 url。

0 投票
5 回答
20531 浏览

angularjs - 如何模拟一个角度 $http 调用并返回一个行为类似于 $http 的 promise 对象

有没有办法返回一个 HttpPromise (或类似的东西)来模拟对 的调用$http?我想设置一个全局变量来指示是否发出了真正的 HTTP 请求,或者是否返回了带有假数据的假 HttpPromise 对象。

例如,我有一个与此类似的服务:

在我的控制器中,我调用了与上述类似的服务:

我试图更改控制器代码;我希望successanderror链接在我的“isInTestMode”中仍然有效。是否可以按照我在服务中描述的方式伪造HttpPromise


下面是上面的“MyService”(一个片段)的修订版,其中包含一个successerror在 promise 对象上。但是,我该如何执行该success方法?

0 投票
2 回答
382 浏览

javascript - 角度模拟忽略请求

我正在尝试使用$httpBackendAngular (v1.2.15) 的服务,但它只是忽略了我的请求。如您所见,我计划了两种请求,一种用于html 文档,另一种用于REST 请求。但是,当我提出请求时,什么也没有发生。我仍然收到承诺,但永远不会解决。如果我更改了请求并写了一些意想不到的东西,我就会失败。

编辑

好的,我将向您展示我调试错误所遵循的步骤:

  • 我使用passThrough函数而不是respond检查正则表达式是否被正确评估。是的,它提出了真正的请求,显然没有找到响应。
  • 之后,我检查了评论中已经解释的刷新请求,但也收到了来自 angular 的消息,说没有请求。
  • console.log()也不输出任何东西。警报、断点等都不是。

还有其他想法吗?

编辑2:

问题解决了。猜猜怎么看。我重新启动了 grunt 服务器并直接工作。

我稍后会尝试重现该错误,看看是否必须报告

0 投票
1 回答
9238 浏览

angularjs - How do I mock $window injected manually in provider private function?

I have the following provider:

And the following test spec:

My question is, how do I mock $window in both Test #1 and Test #2 so they are successful? I have tried with $provide.value and spyOn for countless objects, but I can't seem to mock the value of $window.navigator.userAgent to run my tests.

How do I solve this?

P.S: The code above acts only as a demonstration of my issue and I cannot change the provider into a service because of special requirements of the application.

0 投票
1 回答
901 浏览

angularjs - How do I test a decorator which is a wrapper around $timeout?

I have the following decorator which wraps around the original $timeout from within $rootScope. When used inside controllers, it will help by canceling the $timeout promise when the scope is destroyed.

But how do I properly unit test this? I kinda see 2 tests I should be doing here... 1) Check if the original $timeout was called when $rootScope.timeout() is called and 2) check if the promise is cancelled when the scope is destroyed.

Here's my current test suite for this:

The only thing that this does is giving me 100% coverage. But that's not what I want... How do I properly test this?

0 投票
1 回答
8147 浏览

angularjs - AngularJS:模拟http服务(使用$httpBackend)来响应Promise API的成功方法的一些数据

我试图解释我的问题的简单版本。
1)我正在为控制器(myController)方法(减法)编写单元测试。
2) 使用 httpbackend 模拟 http 我想在减法中向 http 的成功函数返回 200 的响应,以降低其在任何虚拟 DELETE url 的成功函数中的值(在测试环境之外总是成功的)。
3)但我认为 expect(scope.testvalue) 仅为 5。任何帮助表示赞赏。

我看到的错误是(预期的) 错误:预期的错误为真。