问题标签 [wct]
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.
polymer - 在 Polymer 中对动态渲染元素进行单元测试
概述
在 中动态渲染的 DOM 元素似乎是异步渲染的dom-if
,dom-repeat
<templates>
因此使单元测试有点痛苦。
聚合物成分
考试
为什么它似乎失败:
单击触发dom-if
/dom-repeat
的按钮时,元素不会以同步顺序呈现。
并且
dom-if
它是异步的后续/嵌套dom-repeat
渲染。更糟糕的是,它
button
本身以计算/绑定的方式获取它的类(请注意class$=
)button
。
所以问题归结为:
在我模拟单击激活所有 3 个条件的按钮后,是否可以强制以同步顺序呈现类的dom-if
、dom-repeat
和计算绑定?
笔记:
- 我使用 Polymer 的官方 WCT 作为测试工具。
- 我也在使用 chai-jquery。
- 我也用过
Polymer.dom.flush()
,但还是不行,咳咳。。 - 我知道我可以改用
chai-as-promised.js
它,但它为我的测试增加了不必要的复杂性,因为这样的小事,所以我想避免它。
unit-testing - 对使用 firebase 的聚合物 Web 组件进行单元测试
我一直在尝试为使用最新版本的 Firebase 分布式数据库的聚合物 Web 组件配置离线单元测试。我的一些测试通过了,但其他的——看起来与通过的测试几乎相同——运行不正常。
我在 github 上建立了一个项目来演示我的配置,我将在下面提供更多评论。
示例: https ://github.com/doctor-g/wct-firebase-demo
在那个项目中,有两套测试工作正常。最简单的是offline-test
,它根本不使用 Web 组件。它只是表明可以使用 firebase 数据库的离线模式来运行一些单元测试。这个技巧的核心是suiteSetup
下面显示的方法——我从nfarina 在 firebase-server 上的工作中学到的技巧。
所有测试offline-test
通过。
下一个套件是wct-firebase-demo-app_test.html
,它测试同名的 Web 组件。该套件包含一系列单元测试,这些测试设置类似offline-test
并且通过了。遵循依赖注入的思想,wct-firebase-demo-app
组件有一个database
属性,将 firebase 数据库引用传递到该属性中,这用于进行所有 firebase 调用。这是套件中的一个示例:
我在组件中也有一些非常简单的方法,以尝试对我稍后将讨论的碎片进行三角测量。只要说这个测试通过就足够了:
并得到此实现的支持wct-firebase-demo-app
:
再一次,这些都过去了。现在我们进入了真正的困境。有一套针对另一个元素的测试x-element
,它有一个方法pushData
:
此方法的测试是其套件中唯一的测试:
这个测试没有通过。在运行此测试时,控制台会显示一条错误消息:
通过设置一些断点并遍历执行,在我看来这个错误是在调用之后once
但在触发回调之前出现的。再次注意,这不会发生在上述相同的测试结构中wct-firebase-demo-app
。
这就是我卡住的地方。为什么offline-test
和wct-firebase-demo-app_test
套件工作正常,但我得到这个 API 密钥错误x-element_test
?我唯一的其他线索是,如果我将有效的 API 密钥复制到我的initializeApp
配置中,那么我会得到一个测试超时。
更新:
这是运行测试时我的控制台日志的(拼凑在一起的)图像。:
为了说明下面 tony19 提出的问题,这里是控制台日志,只是pushData has an effect
注释掉x-element_test
了:
templates - MockInteractions 点击项目不会在 Web 组件测试器中选择项目
<paper-menu>
我有一个用 a填充 a 的元素<template dom-repeat>
。
我想测试一下,一旦我在 中添加了一些东西<paper-menu>
,我就可以选择它并且它会按预期更新一个属性。
我无法正确测试行为。我想在菜单项上模拟一个点击事件并确保custom-filter-changed
被触发。
如果我选择一个带有 的元素element.$.customLabels.select('red')
,该custom-filter-changed
事件将按预期触发。
如果我用 选择和元素MockInteractions.tap( Polymer.dom( element.root ).querySelector( 'paper-icon-item[value="red"]' ) )
,则元素会被录音(我在纸质项目中点击点击作为测试),但不会选择元素。
我注意到 MockInteractions.tap 触发的点击事件没有目标或 srcElement 并且路径与我实际单击元素时不同。
我想尽可能MockInteractions.tap
地模仿真实的用户操作。
javascript - 如何在重新排列 Polymer 元素中的子跨度时通过 wct 测试?
我正在创建一个名为“价格文本”的聚合物元素,它显示货币价值和一些与之相关的文本。当“交换”属性存在时,我还添加了反转它们的位置的能力。尽管能够在浏览器演示中成功使用 swap 属性来反转跨度的顺序(内部显示“价格文本”)。
我只能在 wct 打开浏览器运行测试时观察到错误。这是我在浏览器中看到的错误:
在 wct 完成所有的任务后,它仍然会向终端返回“Tests Passed”。
我已经确定setup函数会运行,只要调用test函数就会出现错误。为了重申我的目标,我希望能够使用 wct 在这个套件中通过两个简单的“预期”测试,其中跨度改变位置。
这是测试夹具。
这是与此测试夹具关联的脚本。
这是价格文本元素。
这是控制影子 DOM 中跨度的函数
我已在以下片段中完整地发布了测试和元素文件。
polymer - WCT 测试聚合物示例
刚刚发现 WCT 测试有多么强大。早就应该这样做了。我们在没有任何其他框架的情况下使用 100% Polymer 进行 SPA。
似乎需要一些示例来说明如何测试 Polymer 应用程序或元素的典型功能。有这样的指南吗?
windows - 聚合物测试永远不会在 Windows 机器上结束
我使用 Polymer 1.0 开发了一个应用程序。我的开发者电脑是Mac,在开发过程中我没有遇到任何问题。
但是,当我在 Windows 机器(Windows 10)上克隆我的应用程序时,测试根本不起作用。
每当我执行polymer test
或wct
命令阻塞终端并且永远不会结束。
在 MACOS 或 Linux 上它可以完美运行。
gulp - Web Component Tester - 每次构建运行测试的 gulp 任务
我想在 gulpfile 里面放一些类似的东西:
目的是查看测试文件夹或元素文件夹(带有聚合物组件)。如果其中一些会更改,请在每个构建中运行测试。
我的 wct.conf.js:
我在某个页面上找到了上面的代码,但是在我添加了一些测试然后gulp
在我的终端中输入之后,我发现了错误,因为 .tmp 文件夹没有更新,并且奇怪的错误就像Polymer is not defined
或者ajax.generateRequest
不是一个函数。当我故意在测试中犯错误以使其失败时,我也得到了正确的错误,所以看起来有些事情还可以,但根本不是。
我将测试添加到包含大量文件的现有项目中。当我尝试在空项目上做同样的事情时,我也得到了同样的错误,直到我输入bower install
.
有没有可能这是凉亭依赖的问题?或者你知道出了什么问题吗?gulpfile 中的这部分代码是否可以执行所需的效果?
非常感谢。
teamcity - 在 TeamCity 上运行 web-component-tester
有人可以帮我wct
在teamcity上跑步吗?我已经配置了buld,但是运行时出现以下错误wct
:
polymer - 设置涉及观察者的单元测试
我无法弄清楚如何为涉及观察者的一些方法编写单元测试。我有一个像这样设置的 Iron-pages 元素
它包含通过单击其受尊重的按钮可访问的网页名称,以允许用户更改网页。在脚本节点中有一个像这样设置的观察者
我是测试新手,我想我需要测试 _routePageChanged、_pageChanged 和 _show404 函数,但不知道如何测试这些函数。我知道我需要确保页面根据点击的信息正确切换,我可能想要模拟各种点击,但为了测试,但不知道如何去做。