Web 组件/HtmlElement:单元测试

2023-12-06

我正在尝试测试一个网络组件。 这是我的项目结构:

├── package.json
├── src
│   ├── app.js
│   └── index.html
└── test
    └── hello-world-test.html

这是我的工作代码:

class HelloWorld extends HTMLElement {
    connectedCallback () {
      this.innerHTML = 'Hello, World!'
    }
}
customElements.define('hello-world', HelloWorld);
<!doctype html>
<html>

<head>
    <meta charset="utf-8">
    <script src="app.js"></script>
</head>

<body>
    <hello-world></hello-world>
</body>

</html>

我正在尝试测试该网络组件web-component-tester。 我在全球范围内安装了该实用程序:

npm install -g web-component-tester

我在package.json file :

"devDependencies": {
    "web-component-tester": "^6.9.0"
}

然后,我在中写了我的测试test文件夹并将其保存到hello-world-test.html:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <script src="../node_modules/web-component-tester/browser.js"></script>
    <script src="app.js"></script>
</head>
<body>
    <test-fixture id="hello-world-fixture">
            <hello-world></hello-world>
    </test-fixture>
    <script>
        suite('<hello-world>', function(){
            let component = document.querySelector('hello-world');

            test('contains hello world string ?', () => {
                let index = component.innerText.indexOf('Hello');
                assert.isAtLeast(index, 0);
            });
        });
    </script>
</body>
</html>

最后,我输入:

wct --npm

然后在Chrome中得到以下错误:

Here is the result in Chrome

我缺少什么才能正确运行测试? 我发现的唯一像样的材料是this one and that one但它们已经过时了。


有很多错误:

  • 首先,请阅读whole上一段中的文档很明显,对于那些使用npm你需要通过额外的依赖wctPackageName :

希望支持基于 npm 的安装的组件应包括 wct-browser-legacy 在其 devDependency 中,这是一个包 仅包含执行 WCT 所需的客户端 JavaScript 在基于 npm 的环境中进行测试。 WCT 将尝试确定哪些 包通过检查兼容来提供客户端代码 软件包按以下优先顺序排列:wct-mocha, wct-browser-legacy 和 web-component-tester。如果你想指定 哪个包提供了WCT客户端代码,使用 --wct-package-name 标志或 wct.conf.json 中的 wctPackageName 选项与 npm 包名称。

所以你需要添加wct-browser-legacy在你的devDependencies

  • 给出您的项目结构,您包括app.js就好像处于同一级别一样。它应该是../src/app.js.
  • 您应该添加type="module"到那个进口
  • 您声明了一个固定装置,但没有通过该函数从中获利fixture

如果我必须纠正你的代码:

  • 命令应该是wct --npm -wct-package-name=wct-browser-legacy。或者甚至更好地创建一个wct.conf.js包含以下信息的文件:
module.exports = {
    npm:true,
    verbose: true,
    plugins: {
        local: {
            browsers: ["chrome"]
        }
    },
    wctPackageName: "wct-browser-legacy"
};
  • 您的测试应修改如下:
<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <script src="../node_modules/web-component-tester/browser.js"></script>
    <script src="../src/app.js"></script>
</head>
<body>
    <test-fixture id="helloWorldFixture">
        <template>
            <hello-world>
            </hello-world>
        </template>
    </test-fixture>
    <script>
        suite('<hello-world>', () => {
            let component;
            setup(() => {
                component = fixture('helloWorldFixture');
            });

            test('contains hello world string ?', () => {
                let index = component.innerText.indexOf('Hello');
                assert.isAtLeast(index, 0);
            });
        });
    </script>
</body>
</html>

请注意,我使用了灯具的 id 并将组件初始化放在setup功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Web 组件/HtmlElement:单元测试 的相关文章

  • 如何使用javascript确保元素仅在圆上朝一个方向移动?

    好吧 我承认我对三角学真的很糟糕 出于上下文的考虑 我将添加我在这里提到的问题中的内容 参考问题 https stackoverflow com a 39429290 168492 https stackoverflow com a 394
  • 如何使用角度材料在具有可扩展行的表格中创建嵌套垫表

    我有以下数据 id c9d5ab1a subdomain wing domain aircraft part id c9d5ab1a info mimetype application json info dependent parent
  • 如何在模态打开时防止主体滚动

    我在用着W3schools 模态脚本 https www w3schools com howto tryit asp filename tryhow css modal我想添加一个功能 防止模型打开时整个主体滚动 我根据我的需要对原始脚本做
  • 使用 JavaScript 移动页面上的按钮

    我的按钮可以移动 但奇怪的是 我无法弄清楚偏移是否有问题 我希望我的按钮随着鼠标光标移动 但现在它的移动方式不是我想要的 有时它会消失 另外 创建的新按钮是重叠的 我不知道如何解决这个问题并拥有更好的外观 var coorA var coo
  • 使用 CSS 折叠和展开元素

    我正在尝试构建一个页面 加载时仅可见标题 并且 当用户单击标题时 每个标题下方的表格会在隐藏和显示状态之间切换 我的限制是只能在 CSS 中执行此操作 这是我到目前为止想到的 https jsfiddle net Argoron c1ypx
  • 如何使用 google test for C++ 来运行数据组合

    我有一个单元测试 需要针对 200 种可能的数据组合运行 生产实现在配置文件中有要测试的数据 我知道如何模拟这些值 我更喜欢为每个组合编写单独的测试用例 并使用某种方式循环数据 有没有使用 Google test for C 的直接方法 您
  • 如何为 HTML 元素创建鼠标拖动滑块?

    我发现的许多滑块插件要么仅单击以查看下一个图像 要么如果它们确实具有鼠标拖动或触摸拖动功能 则仅允许图像 有谁知道为任何 html 元素编写鼠标拖动滑块的插件或可能的方法 我专门使用 SVG 但将来如果能在 div 元素之间滑动就更好了 H
  • 为什么我的列表项项目符号与浮动元素重叠

    我有一个 XHTML Strict 页面 我在其中将图像浮动在常规文本段落旁边 一切都很顺利 除非使用列表而不是段落 列表的项目符号与浮动图像重叠 更改列表或列表项的边距没有帮助 边距是从页面左侧开始计算的 但浮动会将列表项推到右侧insi
  • 使用 typescript、karma 和 jasmine 进行 RxJS Observable.timer 单元测试

    大家好 我对 Angular2 Karma 和 Jasmine 还比较陌生 目前我正在使用 Angular 2 RC4 Jasmine 2 4 x 我有一个 Angular 2 服务 它定期调用 http 服务 如下所示 getDataFr
  • 如何在 select2 下拉列表中换行?

    我正在使用 select 2 下拉菜单 然后在其内容中显示一些长句子 我想在句子的正确位置添加换行符 但下拉菜单是自动调整的 For example the content of the dropdown right now looks l
  • 无法获取log.d或输出Robolectrict + gradle

    有没有人能够将 System out 或 Log d 跟踪从 robolectric 测试输出到 gradle 控制台 我在用Robolectric Gradle 测试插件 https github com robolectric robo
  • 如何在有序列表中组合数字和字母?

    如何在 CSS 中用数字和字母递增有序列表 ol nested margin bottom 0 counter reset item ol nested li display block position relative ol neste
  • jQuery - 如何从 div > p 获取文本

    如何从 div 类中获取主题名称 div class subject img src image eng jpg p English p div div class subject img src image bio jpg p Biolo
  • html 选择列表 - 通过传入变量获取文本值?

    我有一个显示列表语言的选择列表
  • 我如何能够以两行显示标题,并且每行的字体大小不同?

    我正在使用 Google Chart API 创建时间线图 并希望将图的标题修改为两行 问题 我如何能够显示具有不同字体大小的两线图表标题 电流输出 理想输出 相关研究 我唯一能找到的是有人试图用饼图来做到这一点 但我尝试了但无法使其发挥作
  • 使用 css 简单地将对象居中,无需修改

    我想使用 CSS 将对象居中 而不需要任何技巧 这可能吗 如何实现 我已经尝试过了 但是我的 p 标签消失了 centered position fixed top 50 left 50 有多种方法可以使元素居中 但这取决于您的元素是什么以
  • HTML5 MediaSource 适用于某些 mp4 文件,但不适用于其他文件(相同的编解码器)

    我正在玩 MediaSource API 代码直接取自 Mozilla 的示例页面 https developer mozilla org en US docs Web API MediaSource endOfStream https d
  • 尝试将数据存储在点击器网站中

    我正在尝试存储一个名为的变量score无论何时刷新 您都会一次又一次地使用它 我不明白的是它的代码是什么 我尝试了一些方法 但似乎都不起作用 这是我的答题器网站 但是当我尝试使用 JavaScript 来存储它时 它不起作用window o
  • 刷新页面时保存用户的选择

    我目前有一个页面显示不同团队的数据 我有一些数据 用户可以单击使其处于 打开 或 关闭 状态 并为每个数据显示不同的图标 它基本上就像一个清单 只是没有物理复选框 我想记住哪些 复选框 已被选中 即使在用户刷新页面或关闭浏览器并稍后返回之后
  • 不可勾选的单选按钮与专有的复选框

    从 UI 角度来看 是拥有一组具有取消选中功能的单选按钮更好 还是拥有一组独占的复选框 意味着一次只能选中一个 更好 Update 我没想到对此会有如此负面的反应 如果我给出一个更接近其使用方式的示例 也许会有所帮助 我有一个充满数据绑定内

随机推荐

  • 不同分组上的 MySQL sum()

    好的 我有两个表的查询 我需要得到两笔钱 我做了一个group by so the sum 工作正常 SELECT sum a x sum b y FROM a b GROUP BY a n where a n b m 到目前为止 这效果很
  • javascript - 为什么服务器不应该使用 JSON 数组进行响应?

    根据这个 Angular 2 指南 不要指望解码后的 JSON 会直接成为英雄数组 该服务器始终将 JSON 结果包装在具有数据属性的对象中 你必须打开它才能获得英雄 这是传统的 Web API 行为 由以下因素驱动安全问题 英雄 是一个对
  • 通过单击 WinForms 中的按钮在面板上绘图

    我正在尝试制作一个程序来绘制Panel 正方形 圆形等 通过单击按钮 到目前为止我还没有做太多事情 只是尝试将代码直接绘制到面板上 但不知道如何将其移动到按钮上 这是我到目前为止的代码 如果您知道比我正在使用的方法更好的绘制方法 请告诉我
  • 使用默认用户帐户以编程方式发送电子邮件

    我希望能够根据用户按下我的应用程序活动上的按钮从我的应用程序发送电子邮件 应用程序需要在按下按钮时自动发送电子邮件 即我不想向用户显示另一个电子邮件表单 并且应该发送电子邮件使用用户手机上的默认电子邮件帐户不是我硬编码到我的应用程序中的电子
  • 如何使用csc(C#编译器)或dmcs(mono C#编译器)生成IL源代码?

    gcc 有一个 s 选项来生成汇编源代码 csc MS C 编译器 或 dmcs mono C 编译器 是否等效 我的意思是 这些编译器是否提供了一个选项来生成可以读取而不是执行二进制文件的 IL 源代码 到达 IL 非常容易 只需使用il
  • Spark结构化流仅从Kafka的一个分区获取消息

    我遇到了这样一种情况 spark 只能从 Kafka 2 分区主题的一个分区进行流式传输和获取消息 我的主题 C bigdata kafka 2 11 0 10 1 1 bin windows gt kafka topics create
  • 如何在选定区域打开相机活动

    每个身体 我是 Android 世界的新手 所以我需要你的帮助 我想知道我们如何在选定区域打开相机活动 以这样的方式 AS 在下面给出的屏幕截图中 不一定要在圆形区域中打开 在我的应用程序中 我可以在任何自定义区域中打开 可以是圆形 矩形或
  • 在Scheme中柯里化一个函数n次

    我无法找到一种将函数柯里化指定次数的方法 也就是说 我给函数一个自然数 n 和一个函数 fun 并且它对函数进行柯里化 n 次 例如 curry n fun 该功能和可能的应用程序是 curry 4 1 2 3 4 这将产生 10 我真的不
  • 将文本转换为 PDF

    我有一大串文本 显然是 PDF 文件的原始数据 我需要将其重新转换为 PDF 目前 我正在将字符串读入 StringBuffer 但如果需要 我可以更改它 从那里我尝试将其写入文件并更改扩展名 我真的希望这能起作用 但我有点知道它不会 我尝
  • GDB断点后如何恢复指令

    我读到 GDB 将 int 3 操作码 CC 放在目标程序内存中的所需地址处 Si这个操作是擦除程序存储器中的一条指令 1字节 我的问题是 当程序继续时 GDB 如何以及何时替换原始操作码 当我在 GDB 中输入 disassemble 时
  • Java 8 Update 71 后 Eclipse Mars 无法启动

    我昨天安装了 Java 8 Update 71 但之后我的 Eclipse 无法启动 Windows 仅在鼠标上显示一个简短的加载符号 仅此而已 在我使用 Java 8 Update 66 之前 一切都运行良好 所以我尝试用 clean参数
  • 如何找到下一个工作日:MATLAB

    鉴于日期 20170203 yyyymmdd 我如何找到下一个工作日 即本例中的 20170206 date datenum 20170203 yyyymmdd NBD nextBusinessDay date NBD 06 Feb 201
  • 绝对定位的容器不会扩展宽度以适应弹性盒内容[重复]

    这个问题在这里已经有答案了 我有一个flexbox在绝对定位的父级内部div 我期望flexbox有一个computed width 导致父 div 展开 但这不会发生 父 div 有一定的宽度 但不足以容纳 Flexbox 鉴于 Flex
  • 无法正确绑定 observables 的 observableArray

    我有以下代码应该绑定 observables 的 observableArray
  • Selenium 和 ChromeDriver:会话未创建,无法连接到渲染器

    我正在尝试通过 Mac 上的 Webdriver io Selenium 和 ChromeDriver 运行自动化测试 我正在使用所有相关软件的最新版本 硒3 9 1 Chrome 驱动程序 2 35 铬64 操作系统 macOS High
  • 如何在 iframe 内引用 iframe

    我想引用另一个 iframe 内的 iframe div class playButton Play div div class flex active slide document document div
  • 从 HashSet 中选取“任何”项目非常慢 - 如何快速做到这一点?

    我目前正在使用贪婪算法做很多工作 它们不关心索引等 它们只适用于组 集合 但我发现 85 的执行时间都花在尝试从 HashSet 中选择一个项目上 根据 MSDN 文档 HashSet 类提供高性能的集合操作 一套 是一个不包含重复元素的集
  • 复制/移动未实现复制的字段

    费里斯船长有一张地图 seven seas png 他隐藏了多个宝藏的区域 在坐标 5 7 和 7 9 处 他想为每件宝藏创建一个单独的藏宝图 原始地图不应更改 他决定使用 Rust 和图像箱为了这 extern crate image u
  • 带参数的 .html 漂亮 URL

    我有一个网站 仅包含 html前端 我想要漂亮的 URL 我的目标是创造这样的东西 http test com mypage html gt http test com mypage http test com mypage1 html g
  • Web 组件/HtmlElement:单元测试

    我正在尝试测试一个网络组件 这是我的项目结构 package json src app js index html test hello world test html 这是我的工作代码 class HelloWorld extends H