问题标签 [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.

0 投票
1 回答
14212 浏览

angular - Jasmine .toHaveBeenCalledWith 什么时候匹配参数?

我有以下角度服务及其茉莉花测试。测试调用 f1() 并监视 f2()。函数 f2 接受变量 v2 并对其进行修改(将字段 a 设置为 3)。函数 f2 应该用 v2 调用(如 f1 中声明的那样),但我的测试在toHaveBeenCalledWith上失败,并说实际调用是在 f2 函数调用之后使用对象。茉莉花在函数调用后是否匹配 .toHaveBeenCalledWith 的参数,这不应该是推荐的方式,或者我在这里犯了一些错误。

服务:

测试:

日志:

请注意,我在测试时在 Chrome 中进行了调试,并且使用 v2 = {a:30} 调用了函数 f2()。

0 投票
2 回答
58 浏览

javascript - 什么时候必须用异步包装规范的回调函数?

出于某种原因,这两个规范正在通过,但是第二个规范正在模板内测试插值,使用来自服务的异步数据。为什么不需要用异步包装回调函数?

0 投票
1 回答
5792 浏览

angular - angular 5 测试组件的静态方法

我正在测试的 Component 类上有一个静态方法,我的问题是如何在我的规范测试文件中访问该方法?

到目前为止,我可以通过以下方式访问组件实例:

0 投票
2 回答
6683 浏览

angular - 如何重用 Angular 测试文件中的所有导入

假设我有一个简单的模块AppModule,它有许多导入、声明和提供程序。现在我想为ListComponent这个模块的声明列表中的一个组件编写一个测试。ListComponent它本身使用了很多(但不是每个)导入的AppModule. 我这样做:

它有效,但肯定是一种不正确的方法。我不想复制粘贴这么多。也许我可以以某种方便的方式重用 AppModule?伪代码如下:

但我只是不知道/找不到这种方法的语法:(

0 投票
1 回答
869 浏览

angular - 在 onInit 中使用异步调用测试 Angular 指令

我有一个 Angular 指令,它在它的 onInit 方法中调用授权服务。它看起来像这样:

我想测试它,所以我创建了一个测试,它在虚拟组件中设置它:

现在,我知道这行不通。我知道测试本身存在多个问题,这只是我要检查的一个示例。

我用detectChanges、fakeAsync和tick()s等多次尝试。我花了最后3个小时在上面(这是我第一次测试指令,我对Angular本身很陌生)并检查了谷歌的前4页。

我如何确保: - 在 onInit 启动之前模拟来自服务的响应?- .subscribe() 指令在期望测试之前完成?还有其他我没有看到的问题吗?配置正确吗?

0 投票
4 回答
8294 浏览

angular - ng 运行测试返回错误 - TypeError: _this.handler.handle is not a function

我创建了角度为 5.2.0 的 c3 条形图。一切正常。但我只想使用 karma 和 jasmine 运行测试npm run test。但是我遇到了以下问题。我希望它与 rxjs 功能有关。但我无法理解错误核心。请帮助任何人解决这个问题。

0 投票
1 回答
10252 浏览

angular - Angular 如何测试@HostListener

我有以下指令。当应用于输入元素时,它会检查字符并在字符被禁止时调用 preventDefault:

工作正常,但我不知道如何测试它。到目前为止,我有以下内容:

但它不起作用。按键事件未触发。知道如何测试这个指令吗?

0 投票
1 回答
765 浏览

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 个电话被打了?

提前致谢

0 投票
1 回答
88 浏览

javascript - Angular 测试文档中的“errorMessage()”函数的内容。(见说明)

我找不到任何关于errorMessage()这里写的函数的来源或解释:

https://angular.io/guide/testing#async-test-with-fakeasync

你能帮我整理一下,里面有什么吗?

0 投票
1 回答
222 浏览

angular - 为什么这个 Angular 验证指令看起来是异步的?

我想使用模板表单和[min]指令[max],所以我创建了它们并且它们可以工作。但是这个测试让我很困惑:验证不是异步执行的,但是在改变我的值和东西之后,我必须经历这个:

我不明白为什么我什至需要那个whenStable(),更不用说另一个detectChanges()循环了。我在这里想念什么?为什么执行此验证需要 2 个变更检测周期?

我是否运行测试async都没关系。

这是我的测试:

这是指令本身(简化了一点):

我已经在一个全新ng new app@angular/cli版本 1.6.8 和最新的 angular 5.2 上对此进行了测试。