问题标签 [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.
angularjs - Angular.mock.$interval.flush() 抛出奇怪的异常
我创建了以下小控制器,用于测试间隔函数是否在指定间隔触发
规格:
茉莉花抛出以下错误:
对我来说,看起来我们收到了一个错误,将应用程序重定向到登录页面,但根据我们的代码,我无法理解为什么会发生这种情况?如果我使用flush < 10,它将在最后一个期望语句中按预期失败。
有谁知道在这种情况下发生了什么或我们做错了什么?
javascript - 如何在 AngularJS 中动态注入整个模块?
好的,所以我正在尝试设置 $httpBackend 以用作针对 API 进行本地开发的模拟服务器。我在不同的模块中有两个服务:search 和 searchMock:
- search 返回一个 $resource 对象,该对象在登台或生产环境中公开 API 动词,并按预期工作
- searchMock 暴露了 $httpBackend ,它反过来用模拟 JSON 对象响应,并按预期工作
我有另一个服务 APIInjector,它根据 Grunt 在构建应用程序时动态包含的配置文件确定当前环境是什么,并相应地注入 search 或 searchMock。
我的问题是,据我从高低搜索中可以看出,$httpBackend 需要在模块的 run 方法中设置。问题是我无法在 APIInjector 的条件逻辑中注入 run 方法。
如果满足开发环境条件,我如何公开 $httpBackend ,否则我的 $resource 服务?请注意,我没有包括调用控制器或 searchService 的代码,但如果需要澄清,我可以。
搜索模拟:
API注射器:
angularjs - 如何使用 Angular 和 Jasmine + $resource 编写行为/功能/端点测试?
我想编写服务器端点的功能测试。我不做 e2e 测试。这更像是一种功能/行为测试。
但是,茉莉花会产生此错误:
我不想用 来模拟它httpBackend.whenGET()
,我想实际测试我的端点是否存在不良行为(也就是责怪后端团队)。我模拟响应的单元测试是一个单独的规范文件。
有什么办法可以用茉莉花来做到这一点?我不想也必须添加量角器或摩卡咖啡。
javascript - 角度资源承诺捕获,茉莉花 toThrow()
我在角度控制器中有一些代码:
user 是一个角度 $resource ,它在调用 get 方法时返回一个承诺。
我正在尝试用茉莉花测试它是否会引发错误,如下所示:
但是会抛出这个错误:
预期函数抛出异常。
我已经测试了对承诺的接受,它按预期工作,但我假设存在一些我无法处理的异步方面。
我也尝试过调用 pass in 并调用 done() 但这也不起作用。
编辑:
我像这样嘲笑我的后端:
请注意,我的其他测试确实有效,我尝试了服务器返回 200 和用户并且一切正常的其他场景。我正在专门测试 $scope.login() 在收到服务器错误时是否抛出错误。
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。
angularjs - 如何模拟一个角度 $http 调用并返回一个行为类似于 $http 的 promise 对象
有没有办法返回一个 HttpPromise (或类似的东西)来模拟对 的调用$http
?我想设置一个全局变量来指示是否发出了真正的 HTTP 请求,或者是否返回了带有假数据的假 HttpPromise 对象。
例如,我有一个与此类似的服务:
在我的控制器中,我调用了与上述类似的服务:
我试图不更改控制器代码;我希望success
anderror
链接在我的“isInTestMode”中仍然有效。是否可以按照我在服务中描述的方式伪造HttpPromise
?
下面是上面的“MyService”(一个片段)的修订版,其中包含一个success
和error
在 promise 对象上。但是,我该如何执行该success
方法?
javascript - 角度模拟忽略请求
我正在尝试使用$httpBackend
Angular (v1.2.15) 的服务,但它只是忽略了我的请求。如您所见,我计划了两种请求,一种用于html 文档,另一种用于REST 请求。但是,当我提出请求时,什么也没有发生。我仍然收到承诺,但永远不会解决。如果我更改了请求并写了一些意想不到的东西,我就会失败。
编辑:
好的,我将向您展示我调试错误所遵循的步骤:
- 我使用
passThrough
函数而不是respond
检查正则表达式是否被正确评估。是的,它提出了真正的请求,显然没有找到响应。 - 之后,我检查了评论中已经解释的刷新请求,但也收到了来自 angular 的消息,说没有请求。
console.log()
也不输出任何东西。警报、断点等都不是。
还有其他想法吗?
编辑2:
问题解决了。猜猜怎么看。我重新启动了 grunt 服务器并直接工作。
我稍后会尝试重现该错误,看看是否必须报告
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.
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?
angularjs - AngularJS:模拟http服务(使用$httpBackend)来响应Promise API的成功方法的一些数据
我试图解释我的问题的简单版本。
1)我正在为控制器(myController)方法(减法)编写单元测试。
2) 使用 httpbackend 模拟 http 我想在减法中向 http 的成功函数返回 200 的响应,以降低其在任何虚拟 DELETE url 的成功函数中的值(在测试环境之外总是成功的)。
3)但我认为 expect(scope.testvalue) 仅为 5。任何帮助表示赞赏。
我看到的错误是(预期的) 错误:预期的错误为真。