问题标签 [ngmock]
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.
javascript - 单元测试中的冻结承诺
在尝试测试返回普通 $q 承诺的服务时,我遇到了一件奇怪的事情。我在任何测试中尝试的任何承诺实际上都不会被解决/拒绝(更具体地说,then
不会调用来自的处理程序,承诺中的代码运行得很好)。我什至尝试在根范围内强制进行摘要,正如 SO 上的其他一些答案所建议的那样,没有任何运气。
这是一个独立的小例子:
我必须做什么才能使承诺按预期工作?
javascript - 使用 Jasmine、Karma 和 ng-Mock 在 Angular 中提供单元测试服务
我无法在单元测试中访问我的服务和过滤器(我还没有尝试过指令)。我以前写过单元测试,但是当我开始配置我们的构建时,我无法访问我们的新服务来编写单元测试。我不断得到TypeError: null is not an object (evaluating 'currentSpec.$modules') in...
。我做了一些阅读,看起来它可能与我正在使用的节点包有关。我想知道更大的社区是否可以确保这些配置看起来正确。我已经缩写了下面的文件。
使用当前配置,这是错误的。
包.json
业力.conf.js
服务规范.js
正在以正确的顺序加载服务和规范。该服务没有依赖关系。我假设当我需要注入服务依赖项时我会遇到同样的错误,但如果我能弄清楚注入,我可以根据需要注入正确的服务。
提前感谢您抽出时间查看此问题并可能回答问题。
-W
javascript - Angularjs ngMock 在每个测试之前或每个测试用例上注入?
设想
我目前正在为一个 Angular 项目编写测试,几乎在我找到的每一篇文章中,我都看到他们在一个块中创建“全局”变量describe
,它们存储要在测试中使用的依赖项,如下所示:
我发现这是非常干燥的,因为它创建并共享了服务/工厂/等的新实例。供测试使用。但是在编写大量测试时,我注意到我创建了全局变量然后不再使用它们,并且忘记在inject()
留下这些痕迹时删除它们,这可能会导致混乱。
我的困惑
因此,我一直在为每个测试用例注入依赖项,然后将小块重构describe
为不会失控的全局变量,如下所示:
这还有一个额外的好处,那就是保持本地化,而不必使用必须搜索它们来自哪里的变量,恕我直言。
问题
beforeEach
每个测试而不是在块内注入依赖项有什么问题吗?
angularjs - 在量角器中刷新 $timeout
我正在使用量角器编写测试,它总是等待$timeout完成。
如果我使用ignoreSynchronization = true; 它停止等待并且测试提前运行。但是对于我的测试,我应该回退ignoreSynchronization = false; . 当我将其设置为 false 时,量角器停止并开始等待之前的$timeout完成。
我将$timeout用于通知窗口并使用此窗口显示验证错误。目前我正在测试验证,它使测试非常慢。
所以ingnoreSynchronization = true的解决方案对我来说不兼容。
我试过$timeout.flush()但它会导致错误$timeout.flush is not a function
我尝试使用ngMock,但不确定是否可以将其与量角器一起使用。
有人解决这个问题吗?
javascript - 无法从模拟 $httpBackend 服务中获得正确的结果
我有一个功能:
我这样称呼它:
从AngularcreateClub()
控制器调用的位置。我还没有编写控制器,因为我坚持测试。我正在使用 ngMocks $httpBackend 来伪造响应,如下所示:
console.log(existingClub)
永远undefined
console.log(validationResult)
是永远{result: true}
我究竟做错了什么?我期待前者是{_id:'1', clubName: 'ClubFoo', owner: 'foo@bar.com'}
,后者是{result: false, reason: 'Club already exists. Choose another Club Name'}
angularjs - 测试时如何访问组件控制器?
我正在尝试对组件进行一些测试。我有以下
控制器item-selector
有一个activate()
方法。如何从我的测试中调用它?$scope
似乎没有任何参考。
javascript - 使用 httpbackend 测试 ngResource - 可能是未处理的拒绝错误
问题
我正在尝试使用 Karma、Mocha、Chai、PhantomJS 测试以下控制器
IndexCtrl.js(简化版)
index.controller.test.js(再次简化,我还有其他非http测试)
当我运行测试时,我收到以下错误。如果我注释掉 flush 行,它不会抛出这个错误,但它不能正常工作。
包.json
模组说明
这与Angular 1.6.0 不同:“可能未处理的拒绝”错误,该错误不是由刷新触发的,并且解决方案正在回滚到 angularjs 1.5.9。我已经尝试回滚到 angular 1.5.9,但无济于事。所以,看在上帝的份上,如果我得到另一个“标记为重复”的盲人......
javascript - AngularJS 模块 NgMockE2E 的 passThrough() 方法不起作用
我在angular-js中有一个sails,node-js应用程序,我决定对它进行一些测试,特别是在后端部分,为此我使用Jasmine和ngMockE2E工具,因为我想用一些真实的服务器端测试它数据。
这是我要测试的代码的一部分:
这是我的service.js文件,我在其中提供了 ajax 服务:
这是我加载Jasmine、ngMocks和测试文件的 html:
这是上面引用的testBackend.js文件,我打算在其中进行测试:
问题是在运行testBackend.js测试文件时,它没有进行任何http 调用。似乎passThrough()函数没有正确完成他的工作。
我遇到并纠正了没有定义passThrough()函数的问题,这是因为我没有加载ngMockE2E模块(而不是ngMock)。但是这次Jasmine工作正常,错误只是规范是错误的:
抱歉,如果此问题已经解决,我无法在任何地方找到解决方案。
javascript - Angular ngMock 有时会因无待处理请求而失败
如果我将呼叫保持在$httpBackend.flush()
原处,则测试将失败No Pending Requests
,但预期会通过。如果我注释掉flush
电话,期望会失败。当我在获取日期的服务中放置一个断点时,它被调用并且承诺正在解决,我可以进入addIssues
它被调用。会不会是另一个导致它的测试?
我确实有TEST.$httpBackend.expectGET("/some/url").respond(200,part)
一个beforeEach。flush
(在 beforeEach 中没有调用)
angularjs - Ng-mock:$compileProvider 没有方法“preAssignBindingsEnabled”
我一直在将 Angular 1.5.8 中的指令重写为组件。我想用 '$componentController` 编写单元测试,就像这里描述的那样:https ://docs.angularjs.org/guide/component 。
问题是我在这一行遇到错误:
var ctrl = $componentController('componentName', null, bindings);
说:
undefined is not a constructor (evaluating 'compileProvider.preAssignBindingsEnabled()')
app/lib/angular-mocks/angular-mocks.js:2235:80
所以看起来 $compileProvider 根本没有preAssignBindingsEnabled
方法。如果有人知道我可能做错了什么,我将不胜感激。
谢谢!
更新:单元测试的 jsFiddle:https ://jsfiddle.net/kveb1ovo/2/