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

javascript - 使用量角器控制鼠标移动

在特定情况下,我必须完全控制我的鼠标,而在actions()课堂上我无法做到这一点。

在我的应用程序中有一个地图,并且有一个功能,它使用套索选择地图的某些部分(比如我们用套索画一个圆圈,选择用红色圆圈表示),然后只有一个弹出窗口用于进一步导航,但是当我使用下面的动作类时

实际的鼠标移动没有发生,我没有找到解决方案,除了使用 Java 机器人类,因此我想创建一个批处理文件,它调用一个带有机器人方法的 Java 类,但我不知道该怎么做。


更新

在执行上面的代码时,这是我的观察:

  1. 直到var plot0行,代码正常执行。
  2. 之后browser.action()...仅在量角器关闭 Chrome 之前执行。不知道为什么。(我也包括睡眠来验证)
  3. 同样在 Chrome 关闭之前,我可以在地图上看到一条直的红线,但后面没有任何弹出窗口(可能鼠标没有被操作类释放)

只是为了添加这次我没有plot0在代码中传递任何元素,我只是在执行上述规范之前手动将鼠标指针保持在地图上。

0 投票
4 回答
90160 浏览

angular - Angular2 单元测试与@Input()

我有一个@Input()在实例变量上使用注释的组件,我正在尝试为该openProductPage()方法编写单元测试,但我对如何设置单元测试有点迷茫。我可以公开那个实例变量,但我认为我不应该诉诸于此。

如何设置我的 Jasmine 测试以便注入(提供?)模拟产品并且我可以测试该openProductPage()方法?

我的组件:

0 投票
3 回答
6760 浏览

angular - 为什么我的单元测试在 Chrome 中通过而在 PhantomJS 中失败?

我正在使用 Angular2 final (2.0.2) 和 angular-cli。我正在尝试将其设置为使用 PhantomJS 运行单元测试。使用 Chrome 和 karma-chrome-launcher 运行规范 - 所有测试都通过。使用 Phantomjs-prebuilt 2.1.13 和 karma-phantomjs-launcher 1.0.2 运行相同的测试失败。

我将 phantomjs 启动器添加到 karma.conf 中的 plugins 数组,以及 browsers 数组中的 PahntomJS。

我得到的错误是:

PhantomJS 2.1.1 (Mac OS X 0.0.0) DataTableFormat 应该以毫秒为单位转换日期 FAILED ReferenceError: Can't find variable: Intl in src/main/js/test.ts (line 53565) intlDateFormat@webpack:///Users /sninio/dev/csp-ui/~/@angular/common/src/facade/intl.js:117:0 <- src/main/js/test.ts:53565:20 webpack:///Users/sninio /dev/csp-ui/~/@angular/common/src/facade/intl.js:148:36 <- src/main/js/test.ts:53596:59 dateFormatter@webpack:///Users/sninio /dev/csp-ui/~/@angular/common/src/facade/intl.js:157:0 <- src/main/js/test.ts:53605:39 format@webpack:///Users/sninio /dev/csp-ui/~/@angular/common/src/facade/intl.js:192:0 <- src/main/js/test.ts:53640:29 transform@webpack:///Users/sninio /dev/csp-ui/~/@angular/common/src/pipes/date_pipe.js:92:0 <- src/main/js/test.ts:70473:90 transform@webpack:///Users/sninio/dev/csp-ui/src/main/js/app/pages/+platform/events/data-table/data-table.pipe.ts:9:4418 <- src/main/js/test.ts:52698:5787 webpack:///Users/sninio/dev/csp-ui/src/main/js/app/pages/+platform/events/data-table/data-table .pipe.spec.ts:20:30 <- src/main/js/test.ts:60923:30 execute@webpack:///Users/sninio/dev/csp-ui/~/@angular/core/bundles /core-testing.umd.j <- src/main/js/test.ts:2997:28 webpack:///Users/sninio/dev/csp-ui/~/@angular/core/bundles/core-testing .umd.js:951:32 <- src/main/js/test.ts:3084:56 invoke@webpack:///Users/sninio/dev/csp-ui/~/zone.js/dist/zone。 js:203:0 <- src/main/js/test.ts:98886:33 onInvoke@webpack:///Users/sninio/dev/csp-ui/~/zone.js/dist/proxy.js:72 :0 <- src/main/js/test.ts:68790:45 调用@webpack:///Users/sninio/dev/csp-ui/~/zone.js/dist/zone.js:202:0 <- src/main/js/test.ts:98885:42 运行@ webpack:///Users/sninio/dev/csp-ui/~/zone.js/dist/zone.js:96:0 <- src/main/js/test.ts:98779:49 webpack:///用户/sninio/dev/csp-ui/~/zone.js/dist/jasmine-patch.js:91:27 <- src/main/js/test.ts:68526:53 execute@webpack:///Users /sninio/dev/csp-ui/~/zone.js/dist/jasmine-patch.js:119:0 <- src/main/js/test.ts:68554:46 execute@webpack:///Users/ sninio/dev/csp-ui/~/zone.js/dist/jasmine-patch.js:119:0 <- src/main/js/test.ts:68554:46 invokeTask@webpack:///Users/sninio /dev/csp-ui/~/zone.js/dist/zone.js:236:0 <- src/main/js/test.ts:98919:42 runTask@webpack:///Users/sninio/dev/ csp-ui/~/zone.js/dist/zone.js:136:0 <- src/main/js/test.ts:98819:57 drainMicroTaskQueue@webpack:///Users/sninio/dev/csp-ui/~/zone.js/dist/zone.js:368:0 <- src/main/js/test.ts:99051:42 PhantomJS 2.1 .1 (Mac OS X 0.0.0) DataTableFormat 应该转换日期字符串 FAILED

也许我在 angular-cli 创建的 test.ts 文件中缺少一些配置?

更新: 似乎只有导入失败的测试DatePipeJsonPipe.
我也尝试导入@angular/common/testingtest.ts但这无济于事 - 它们没有在相关的 index.js 中导出。
还尝试导入整个文件@angular/common/pipes,但这也不起作用。

这是管道:

和规格:

这是我的文件-与...test.ts生成的文件没有太大变化angular-cli

知道为什么这适用于 Chrome 而不是 PhantomJS 吗?

0 投票
2 回答
36146 浏览

angular - Angular 2 测试 - 异步函数调用 - 何时使用

在 Angular 2 中进行测试时,何时使用TestBed中的异步功能?

你什么时候用这个?

你什么时候用这个?

任何人都可以启发我吗?

0 投票
1 回答
8003 浏览

angular - 如何使用可观察服务测试组件错误处理

语境

我正在尝试测试一个组件。在另一篇文章中,我询问了有关测试直接函数调用的问题。在这里,我使用相同的示例组件将重点放在组件的错误处理上。

我想测试,当我的服务返回一个可观察到的错误时,我的组件是否正确调用了 console.error(error)。

如何“创建”此错误触发器并测试我的组件是否正确处理它。我听说间谍可以做到这一点,但我不知道在哪里设置这个间谍。

我想模拟服务上的http请求可能失败的情况。出于任何原因或任何错误代码。

代码

这是组件、存根服务和我的规范文件的代码。

零件

组件规格文件

存根服务

0 投票
2 回答
4351 浏览

angular - angular Testbed overrideModule not working

When using the following configuration for a test fixture, I get complaints that the tag cannot be found. Substituting the MockSelectionToolComponent directly in AppModule works fine, so must be something else...

Error: Template parse errors: 'app-selection-tool' is not a known element:

0 投票
1 回答
8976 浏览

angular - 在 Angular 4 项目中的功能性 e2e 量角器测试中模拟休息调用

我们有一个庞大的项目,我们编写了很多测试用例来涵盖我们 e2e 功能测试用例中的大量真实场景用户行为。

随着测试的进行,它会进行大量的休息调用来完成测试用例。当我们在酱实验室覆盖不同的浏览器时,它会增加 5-9 倍。

我想要的是模拟所有其余的调用,这样就不会对实际服务器进行任何真正的调用,但会在内部对其进行处理。它用于功能性 e2e 测试而不是单元测试,因为我们使用 jasmine 模拟了所有单元测试spyOn

我已经探索json-server$httpBackend量角器。son-server 不适合,因为它不能很好地处理应用程序发布、放置、删除调用。在 $httpBackend 的情况下

我已经阅读了这篇文章及其适用于 andularJs 应用程序而不是 Angular 应用程序,以及它所有关于 angularJs 的单个休息调用模拟,而不是所有休息调用。

还查看了 angularjs 的这个 angularjs multi mock,它也适用于 angularjs 而不是 angular,看起来这改变了查询参数的原始 rest url。

0 投票
2 回答
4173 浏览

angular - 在Angular单元测试中使用回车键提交表单

我正在为作为登录表单的 Angular 4 组件编写测试。可以通过单击“提交”按钮或在任何输入字段中按 Enter 来提交表单。此行为由 Angular 表单指令规定。

我可以编写一个测试用例来验证按钮单击是否提交了表单,但我无法通过按键事件触发提交行为。

模板:

规格:

从按钮分派“点击”事件的测试通过,但从输入元素分派 keydown 事件的测试(当前禁用)失败。

我可以调度不同的事件来触发表单的 ngSubmit 处理程序触发吗?

0 投票
1 回答
2256 浏览

angular - 角鼠标进入单元测试不起作用

我正在尝试在 Angular 4 业力单元测试中测试鼠标输入,没有错误但鼠标输入没有调用绑定到鼠标输入事件的方法。

在组件类中,我调用以下方法

测试鼠标输入:

在我的测试中,我试图调用鼠标输入事件,但预期的结果不匹配。当我看到代码覆盖率时,甚至没有调用该方法。

有什么想法吗?

0 投票
1 回答
6938 浏览

angular - 模拟角度服务类属性或变量

我正在对 Angular 应用程序进行单元测试,并且需要模拟一项服务。我能够毫无问题地模拟服务方法,但是当我尝试以同样的方式模拟属性时,它给了我错误

我的配置服务有一个属性和一个方法,我想模​​拟该属性,因为我无法生成该值。

服务

在角度测试中模拟服务

当我这样做时,它给了我错误。