问题标签 [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 回答
2815 浏览

angularjs - AngularJS $httpBackend expectGET 不工作

我正在为 AngularJS 工厂编写 QUnit 测试。这是工厂的代码:

另请参阅下面的 Qunit 测试用例。test-1 从作品中获得了 http 响应$httpBackend,但在 test-2 中,它没有。

知道为什么它不起作用吗?

这是关于 jsFiddle 的演示

0 投票
0 回答
435 浏览

angularjs - 如何以可以观察 UI 并与 UI 交互的方式暂停 AngularJS 指令单元测试?

动机

测试指令时;有时断言以不明显的方式失败,堆栈跟踪没有帮助,并且在使用 Chrome 开发人员工具在断点处暂停时检查局部变量会将森林隐藏在树后面。

这是我希望我能够暂停单元测试(可能使用iitor ddescribe)并在指令的 UI 周围查看以缩小错误行为的时候。

至今

我之前已经能够使用 KnockoutJS 实现这一点,并发现它在复杂场景中是一种非常有用的技术。现在我想对 AngularJS 做同样的事情。

  • 我发现我可以将$compile使用 Angular 的元素附加到 html 正文,这使它可见,但是我无法与之交互,就好像所有绑定都已关闭一样。
  • 经过仔细检查,我发现在运行测试用例(一个it块)时,一切似乎都井然有序,一旦测试用例完成,所有事件侦听器就会从相应的 DOM 元素中消失——click比如<button ng-click="...">.
  • 经过一番挖掘,我发现在angular-mocks.js:1965 的深处有一个afterEach块可以调用.off()在两个地方关闭 DOM 事件侦听器:
  • 当我注释掉这两.off()行时,瞧,附加的指令在 DOM 中变得栩栩如生!

注意:虽然我链接到 ( v1.2.10-build.2148+sha.fced1c0) 的 angular-mocks 版本不是最先进的,但较新的版本似乎只是在涉及到这部分时移动的行号有所不同。

问题

是否有更好的(更多支持、更少临时性和/或更少hackish)方法来实现我想要做的事情?如果是这样,怎么做?

编辑:版本

  • 业力 0.10.9
  • 茉莉花 1.3.1
  • Angular Mocks v1.2.10-build.2148+sha.fced1c0
  • AngularJS 1.2.10-build.2148+sha.fced1c0
0 投票
1 回答
1026 浏览

angularjs - 单元测试 AngularJS 和 PouchDB 服务

我正在尝试对我的各个 Angular 工厂进行单元测试,但在尝试正确模拟和注入 PouchDB 对象时遇到了困难。我的工厂代码目前如下:

我曾尝试使用 Angular 的 $provide 服务注入一个模拟 PouchDB 实例,但没有成功:

我不完全确定从这里去哪里。任何帮助将不胜感激!

0 投票
0 回答
1025 浏览

jasmine - 未知提供者:$rootElementProvider <- $rootElement <- karma 运行中的 $location 错误

嗨,我在运行 karma run 时遇到错误

控制器 :

这里上面的控制器用户 LCService

LC服务:

在 karma.conf.js 文件中

我的应用程序中也有“angular-route.js”。但是当我运行它时,它显示以下错误

如何解决这个问题?

0 投票
1 回答
1178 浏览

angularjs - 在 e2e 测试中从 httpBackend 访问 POST 数据

在这个例子中,我有一个 e2e 测试做一个按钮点击,它执行一个执行 POST 的函数

我希望能够在我的 e2e 场景代码中从 testDev httpBackend 回调访问“数据”对象以进行验证。

这在 e2e 测试中可能吗?如果是这样,你能指出我正确的方向吗?

谢谢

场景代码

测试模块

标记

控制器

赛跑者

0 投票
1 回答
141 浏览

javascript - $httpBackend 无法与 ngMocksE2E 模块一起正常工作

我正在使用 Angular JS (v1.2.16) 制作一个简单的应用程序前端。我将使用 REST API,但该 API 尚未构建,其规范已完成。因此,基于模块 ngMockE2E 中的链接:$httpBackend - 服务,我可以模拟 API 请求以及我的开发过程。

我试图做同样的事情并提出一个演示,但它给了我一个错误,我觉得它的 passThrough 功能失败了。

演示可在此链接http://ngdemo.ws01.tranceserve.com/#/projects上找到。

现在它给了我一个错误说明:

错误:意外请求:GET /views/projects.html 不再有请求

请帮忙。

0 投票
3 回答
24670 浏览

angularjs - Angular mock 无法注入我的模块依赖项

我想为我的应用程序测试一个 Angular 控制器fooApp,定义如下:

控制器,MainCtrl定义:

所以我测试了几种创建测试的方法,比如这个:

结果:

我也用beforeEach(angular.mock.module('cwfApp'));(而不是beforeEach前面代码中的第一个)进行了测试,但错误几乎相同。

关于我的 karma.conf.js 文件,我设置了这个文件列表:

注入似乎失败了,但我真的不明白我的配置中缺少什么或错误。上面的stacktrace并没有给出很多解释……

任何的想法?

我正在使用 Angular 1.2.8。

问候

使用@Engineer 提供的代码进行编辑:

错误几乎相同:

我将尝试创建一个小提琴来重现我的问题...

0 投票
1 回答
306 浏览

javascript - AngularJS 模拟自执行控制器

如何防止具有自实例化功能的角度控制器执行测试?

(我用一个人为的例子来说明我的问题)

我有一个控制器在启动时执行一些代码(在我的例子中是 ajax)

我正在尝试为控制器编写测试。我不想doSomething执行。

使用backbone.js时,我会做类似的事情:

我在初始化之前修改原型以防止执行。$controller 似乎给了我一个控制器的实例。能够获得原型会很有用。可能还有其他方法可以克服这个我不知道的!

0 投票
1 回答
950 浏览

angularjs - 创建单元测试,其中每个测试都有其特定的测试数据和测试模拟

我有这个测试结构并且它正在工作,但是当我在这个单元测试 .js 文件中放置更多测试时,它不能满足我的要求,但是所有相关的测试都应该去那里。

工作

我想要的是用我自己的话或伪代码描述的:

这是我尝试过的,但它不起作用。

我假设在测试中此时将存根分配给 $provide.value 为时已晚,因为之前注入/创建了课程计划工厂,并且课程计划工厂具有真正的存根对象作为依赖项。只是看看:

这就是我得到的错误:

那么,我怎样才能为服务依赖注入一个存根而不是在 beforeEach 方法中,而是在单元测试本身内部,因为我需要一个特定的存根!?

0 投票
0 回答
89 浏览

javascript - 对角度教程步骤感到困惑

来自https://docs.angularjs.org/tutorial/step_11单元测试部分:

我只是不明白为什么第 2 行评估为真并且scope.phones正在[]追求

beforectrl = $controller(PhoneListCtrl, {$scope: scope}); scope.phones评估为undefined和 after but before $httpBackend.flush(),它评估为一个空数组,有人可以解释一下这个谜吗?