问题标签 [angular-test]
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.
angular - Jasmine .toHaveBeenCalledWith 什么时候匹配参数?
我有以下角度服务及其茉莉花测试。测试调用 f1() 并监视 f2()。函数 f2 接受变量 v2 并对其进行修改(将字段 a 设置为 3)。函数 f2 应该用 v2 调用(如 f1 中声明的那样),但我的测试在toHaveBeenCalledWith上失败,并说实际调用是在 f2 函数调用之后使用对象。茉莉花在函数调用后是否匹配 .toHaveBeenCalledWith 的参数,这不应该是推荐的方式,或者我在这里犯了一些错误。
服务:
测试:
日志:
请注意,我在测试时在 Chrome 中进行了调试,并且使用 v2 = {a:30} 调用了函数 f2()。
javascript - 什么时候必须用异步包装规范的回调函数?
出于某种原因,这两个规范正在通过,但是第二个规范正在模板内测试插值,使用来自服务的异步数据。为什么不需要用异步包装回调函数?
angular - angular 5 测试组件的静态方法
我正在测试的 Component 类上有一个静态方法,我的问题是如何在我的规范测试文件中访问该方法?
到目前为止,我可以通过以下方式访问组件实例:
angular - 如何重用 Angular 测试文件中的所有导入
假设我有一个简单的模块AppModule
,它有许多导入、声明和提供程序。现在我想为ListComponent
这个模块的声明列表中的一个组件编写一个测试。ListComponent
它本身使用了很多(但不是每个)导入的AppModule
. 我这样做:
它有效,但肯定是一种不正确的方法。我不想复制粘贴这么多。也许我可以以某种方便的方式重用 AppModule?伪代码如下:
但我只是不知道/找不到这种方法的语法:(
angular - 在 onInit 中使用异步调用测试 Angular 指令
我有一个 Angular 指令,它在它的 onInit 方法中调用授权服务。它看起来像这样:
我想测试它,所以我创建了一个测试,它在虚拟组件中设置它:
现在,我知道这行不通。我知道测试本身存在多个问题,这只是我要检查的一个示例。
我用detectChanges、fakeAsync和tick()s等多次尝试。我花了最后3个小时在上面(这是我第一次测试指令,我对Angular本身很陌生)并检查了谷歌的前4页。
我如何确保: - 在 onInit 启动之前模拟来自服务的响应?- .subscribe() 指令在期望测试之前完成?还有其他我没有看到的问题吗?配置正确吗?
angular - ng 运行测试返回错误 - TypeError: _this.handler.handle is not a function
我创建了角度为 5.2.0 的 c3 条形图。一切正常。但我只想使用 karma 和 jasmine 运行测试npm run test
。但是我遇到了以下问题。我希望它与 rxjs 功能有关。但我无法理解错误核心。请帮助任何人解决这个问题。
angular - Angular 如何测试@HostListener
我有以下指令。当应用于输入元素时,它会检查字符并在字符被禁止时调用 preventDefault:
工作正常,但我不知道如何测试它。到目前为止,我有以下内容:
但它不起作用。按键事件未触发。知道如何测试这个指令吗?
angular - 如何使用 Angular 的 HttpTestingController 检查是否已向同一个 API 端点发出了 2 个 HTTP 请求?
我正在使用 Angular 5 和 Jasmine 来测试我的 HTTP 服务。
我的 HTTP 服务将作为方法的一部分对同一个端点进行 2 次 HTTP 调用。我想检查该服务是否进行了 2 个 HTTP 调用。
已经有一个非常有用的expectOne("route").flush([]);
方法,但理想情况下我想要expectTwo("route").flush([]);
或expect("route", 2).flush([]);
这是一个示例测试:
有什么方法可以断言 2 个电话被打了?
提前致谢
javascript - Angular 测试文档中的“errorMessage()”函数的内容。(见说明)
我找不到任何关于errorMessage()
这里写的函数的来源或解释:
https://angular.io/guide/testing#async-test-with-fakeasync。
你能帮我整理一下,里面有什么吗?
angular - 为什么这个 Angular 验证指令看起来是异步的?
我想使用模板表单和[min]
指令[max]
,所以我创建了它们并且它们可以工作。但是这个测试让我很困惑:验证不是异步执行的,但是在改变我的值和东西之后,我必须经历这个:
我不明白为什么我什至需要那个whenStable()
,更不用说另一个detectChanges()
循环了。我在这里想念什么?为什么执行此验证需要 2 个变更检测周期?
我是否运行测试async
都没关系。
这是我的测试:
这是指令本身(简化了一点):
我已经在一个全新ng new app
的@angular/cli
版本 1.6.8 和最新的 angular 5.2 上对此进行了测试。