问题标签 [ngdescribe]

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 投票
0 回答
144 浏览

angularjs - ngDescribe 不会完成第二个规范

我在使用 ngDescribe 时遇到了链式规范的问题。第二个规范永远不会完成并超时。如果我注释掉第一个规范,则第二个规范成功完成。所以,我知道每个规范都是有效的并且有效。

这是两个规格的整个测试。

0 投票
1 回答
347 浏览

javascript - 使用 ng-describe 进行带量角器的端到端测试

我最近发现了一个很棒的ng-describe包,它通过抽象出你必须记住/查找和编写的所有样板代码来加载、注入、模拟或监视,从而使为 AngularJS 应用程序编写单元测试变得非常透明。

有人试过用ng-describewithprotractor吗?这有意义吗?我们能从中受益吗?


引起我注意的一件事是您可以轻松地模拟 HTTP 响应:

模拟 HTTP 响应通常有助于实现更好的 e2e 覆盖并测试 UI 如何对特定情况做出反应以及错误处理如何工作。这是我们目前正在做的事情protractor-http-mock,还有其他选项看起来不像使用ng-describe.

0 投票
1 回答
555 浏览

angularjs-directive - ng-describe/Angular/Karma 单元测试:使用 ng-describe 的 setupControllers 编译带有所需控制器的指令

我正在使用ng-describe(我必须说,很棒)为 angularJS 编写业力单元测试。

我有两个指令。我想测试testing需要somethingController.

code:

如果我使用手动编译,我能够成功运行这些测试。

如果我不进行手动编译,最终会出现以下错误:

我真正想做的是:

我正在尝试最大限度地使用 ng-describe 并摆脱手动编译。我试过使用describeApi.setupControllershttps://github.com/kensho/ng-describe#secondary-options我没有运气。

  • 使用 adescribeApi.setupElement('<testing></testing>')会给我留下上面显示的 $compile 错误。
  • 使用describeApi.setupControllers('something')给我留下了错误:Error: [ng:areq] Argument 'something' is not a function, got undefined
  • 我试图设置名为something, somethingController,的控制器$something$somethingController但我也在undefined, not a function那里看到了错误。

有没有办法让这个工作?目前我无法在网上找到解决方案...

0 投票
1 回答
489 浏览

javascript - AngularJS 自定义验证指令单元测试:模型值未定义

我有一个指令,在我的输入上添加一个验证器以供 ng-messages 使用:

我正在尝试对其进行单元测试(使用 ng-describe):

但是有两个问题(可能有相同的原因??):

  1. 第一个测试失败是因为$scope.model.dateundefined(它应该被更新,'01/01/2001'因为它是一个有效的输入)。我注意到$modelValuefromform.dateField也是未定义的。我知道那$scope.model.date是更新的,因为如果它不会,它会是null. 但是为什么undefined
  2. 第二个测试失败,因为它$valid仍然true存在(它应该被更新,false因为它是无效的)。我再次问:为什么?

我试图将我的代码与这个帖子的答案进行比较,但我没有看到我的错误在哪里。

请注意,该指令在我的应用程序表单中运行良好(模型正在按预期更新,并且 ng-messages 也可以工作),所以我不知道我在这里做错了什么。

如果有帮助,我正在使用 Angular 1.4.7。

编辑 :

尝试了这种方法,结果相同。$modeValue保持未定义,而使用$viewValue正确$$rawModelValue的字符串进行更新。

这些是我的测试日志:

0 投票
0 回答
399 浏览

javascript - $httpBackend 似乎没有刷新请求

我正在使用 ngDescribe 测试我的 Angular 应用程序。我不认为ngDescribe 在这里应该是一个太大的问题,因为它只是为我管理依赖注入。我首先开始尝试按照 ngDescribe 文档所说的方式进行测试,在下面的代码中,我将其更改为更直接的方法,以查看是否可以进行任何更改。我正在调用一个依次调用的方法,在$http.post('urlname', data);调试时我可以清楚地看到我的方法一直到达它调用 post() 的位置,但它永远不会继续。因此,我的测试总是超时。

希望我只是有一些简单的错误!这是我的代码。失败的测试是“应该工作”,所有其他的都按预期通过。

另请注意,在测试之前,这是由测试和服务的 babel 处理的。

这是服务,使用时效果很好。我已经删除了它涉及的一些其他变量,但我向您保证这些变量工作正常。在调试测试时,我可以看到等待被击中,但它永远不会继续过去,或者返回。在应用程序中使用时,它完全按预期返回。我认为这与ngmock没有按应有的方式返回有关。

以下是测试:

被调用的方法 apiCall 只是一个由它解析的 promise,$http.post().then();如果抛出错误,它也会解析 false。

由于 deps.http.expectPOST 没有失败,我可以看出传出请求已发送。我通过将其更改为 expectGET 来验证这一点,然后我收到一个关于它是 POST 的错误。

我曾尝试将 flush() 方法移动到测试方法的所有不同部分,但似乎没有什么区别。

有什么想法吗?非常感谢你的帮助!