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

0 投票
1 回答
3379 浏览

polymer - 在 Polymer 中对动态渲染元素进行单元测试

概述

在 中动态渲染的 DOM 元素似乎是异步渲染的dom-ifdom-repeat <templates>因此使单元测试有点痛苦。


聚合物成分

考试


为什么它似乎失败:

单击触发dom-if/dom-repeat的按钮时,元素不会以同步顺序呈现。

  • 并且dom-if它是异步的后续/嵌套dom-repeat渲染。

  • 更糟糕的是,它button本身以计算/绑定的方式获取它的类(请注意class$=button

所以问题归结为:

在我模拟单击激活所有 3 个条件的按钮后,是否可以强制以同步顺序呈现类的dom-ifdom-repeat和计算绑定?


笔记:

  • 我使用 Polymer 的官方 WCT 作为测试工具。
  • 我也在使用 chai-jquery。
  • 我也用过Polymer.dom.flush(),但还是不行,咳咳。。
  • 我知道我可以改用chai-as-promised.js它,但它为我的测试增加了不必要的复杂性,因为这样的小事,所以我想避免它。
0 投票
1 回答
434 浏览

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-testwct-firebase-demo-app_test套件工作正常,但我得到这个 API 密钥错误x-element_test?我唯一的其他线索是,如果我将有效的 API 密钥复制到我的initializeApp配置中,那么我会得到一个测试超时。

更新:

这是运行测试时我的控制台日志的(拼凑在一起的)图像。:

显示失败测试的控制台日志

为了说明下面 tony19 提出的问题,这里是控制台日志,只是pushData has an effect注释掉x-element_test了:

显示通过测试的控制台日志

0 投票
0 回答
259 浏览

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地模仿真实的用户操作。

0 投票
1 回答
277 浏览

javascript - 如何在重新排列 Polymer 元素中的子跨度时通过 wct 测试?

我正在创建一个名为“价格文本”的聚合物元素,它显示货币价值和一些与之相关的文本。当“交换”属性存在时,我还添加了反转它们的位置的能力。尽管能够在浏览器演示中成功使用 swap 属性来反转跨度的顺序(内部显示“价格文本”)。

我只能在 wct 打开浏览器运行测试时观察到错误。这是我在浏览器中看到的错误:

在 wct 完成所有的任务后,它仍然会向终端返回“Tests Passed”。

我已经确定setup函数会运行,只要调用test函数就会出现错误。为了重申我的目标,我希望能够使用 wct 在这个套件中通过两个简单的“预期”测试,其中跨度改变位置。

这是测试夹具。

这是与此测试夹具关联的脚本。

这是价格文本元素。

这是控制影子 DOM 中跨度的函数

我已在以下片段中完整地发布了测试和元素文件。

0 投票
0 回答
554 浏览

polymer - WCT 测试聚合物示例

刚刚发现 WCT 测试有多么强大。早就应该这样做了。我们在没有任何其他框架的情况下使用 100% Polymer 进行 SPA。

似乎需要一些示例来说明如何测试 Polymer 应用程序或元素的典型功能。有这样的指南吗?

0 投票
2 回答
322 浏览

windows - 聚合物测试永远不会在 Windows 机器上结束

我使用 Polymer 1.0 开发了一个应用程序。我的开发者电脑是Mac,在开发过程中我没有遇到任何问题。

但是,当我在 Windows 机器(Windows 10)上克隆我的应用程序时,测试根本不起作用。

每当我执行polymer testwct命令阻塞终端并且永远不会结束。

在 MACOS 或 Linux 上它可以完美运行。

0 投票
1 回答
494 浏览

gulp - Web Component Tester - 每次构建运行测试的 gulp 任务

我想在 gulpfile 里面放一些类似的东西:

目的是查看测试文件夹或元素文件夹(带有聚合物组件)。如果其中一些会更改,请在每个构建中运行测试。

我的 wct.conf.js:

我在某个页面上找到了上面的代码,但是在我添加了一些测试然后gulp在我的终端中输入之后,我发现了错误,因为 .tmp 文件夹没有更新,并且奇怪的错误就像Polymer is not defined或者ajax.generateRequest不是一个函数。当我故意在测试中犯错误以使其失败时,我也得到了正确的错误,所以看起来有些事情还可以,但根本不是。

我将测试添加到包含大量文件的现有项目中。当我尝试在空项目上做同样的事情时,我也得到了同样的错误,直到我输入bower install.

有没有可能这是凉亭依赖的问题?或者你知道出了什么问题吗?gulpfile 中的这部分代码是否可以执行所需的效果?

非常感谢。

0 投票
1 回答
1422 浏览

selenium - Polymer Webcomponent Tester (WCT) XVFB 无法连接到 selenium

当我们使用 XVFB 加载 WCT 测试时,我在 ubuntu 上收到此错误。测试第一次顺利通过,但是当我们第二次运行时它失败了。看起来它缺少 HTMLunit 驱动程序。我尝试安装单元驱动程序但无法修复。

xvfb-run wct --skip-selenium-install 在此处输入图像描述

0 投票
1 回答
57 浏览

teamcity - 在 TeamCity 上运行 web-component-tester

有人可以帮我wct在teamcity上跑步吗?我已经配置了buld,但是运行时出现以下错误wct

0 投票
0 回答
165 浏览

polymer - 设置涉及观察者的单元测试

我无法弄清楚如何为涉及观察者的一些方法编写单元测试。我有一个像这样设置的 Iron-pages 元素

它包含通过单击其受尊重的按钮可访问的网页名称,以允许用户更改网页。在脚本节点中有一个像这样设置的观察者

我是测试新手,我想我需要测试 _routePageChanged、_pageChanged 和 _show404 函数,但不知道如何测试这些函数。我知道我需要确保页面根据点击的信息正确切换,我可能想要模拟各种点击,但为了测试,但不知道如何去做。