未定义的属性测试 Lit typescript Web 组件

2023-12-11

我最近将一个lit web组件转换为Typescript,似乎无法弄清楚为什么我的测试现在失败了..在转换之前一切都工作正常。

这些是我的测试依赖项:

"@open-wc/testing": "^3.1.2",
"@web/dev-server-esbuild": "^0.2.16",
"@web/test-runner": "^0.13.27"

所以我跑"test": "web-test-runner",具有以下配置web-test-runner.config.mjs(使用 tsc 转译代码也遇到同样的错误):

import { esbuildPlugin } from '@web/dev-server-esbuild';

const filteredLogs = ['Running in dev mode', 'Lit is in dev mode'];

export default /** @type {import("@web/test-runner").TestRunnerConfig} */ ({
  files: 'lib/**/*.test.ts',
  nodeResolve: {
    exportConditions: ['browser', 'development'],
  },
  plugins: [esbuildPlugin({ ts: true })],
  filterBrowserLogs(log) {
    for (const arg of log.args) {
      if (typeof arg === 'string' && filteredLogs.some(l => arg.includes(l))) {
        return false;
      }
    }
    return true;
  }
});

并得到这个错误:

components: > web-test-runner
components: Chrome: |██████████████████████████████| 0/1 test files | 0 passed, 0 failed
components: Running tests...
lib/MyElement/index.test.ts:
components:  ❌ MyElement > has a default title "World" and count 0
components:       AssertionError: expected undefined to equal 'World'
components:         at o.<anonymous> (lib/MyElement/index.test.ts:11:23)
components: Chrome: |██████████████████████████████| 1/1 test files | 0 passed, 1 failed
components: Finished running tests in 2.7s with 1 failed tests.
components: npm ERR! code ELIFECYCLE
components: npm ERR! errno 1
components: npm ERR! [email protected] test: `web-test-runner`
components: npm ERR! Exit status 1
components: npm ERR! 
components: npm ERR! Failed at the [email protected] test script.
components: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
components: npm ERR! A complete log of this run can be found in:
components: npm ERR!     /Users/shawn/.npm/_logs/2022-03-21T22_11_54_084Z-debug.log
lerna ERR! npm run test exited 1 in 'components'

这是组件代码:

import {LitElement, html, css} from 'lit';
import {customElement, property, state} from 'lit/decorators.js';

@customElement('my-element')
 export class MyElement extends LitElement {
   static styles = css`
     :host {
       display: block;
       border: solid 1px gray;
       padding: 16px;
       max-width: 800px;
     }
   `;

   @property() name: string = 'World';

   @state() count: number = 0;

   _onClick() {
    this.count++;
    this.dispatchEvent(new CustomEvent('count-changed'));
  }

  sayHello(name: string) {
    return `Hello, ${name}`;
  }
 
  render() {
    return html`
      <h1>${this.sayHello(this.name)}!</h1>
      <button @click=${this._onClick} part="button">
        Click Count: ${this.count}
      </button>
      <slot></slot>
    `;
  }
 }

最后是测试代码:

import { html, fixture, expect } from '@open-wc/testing';

import { MyElement } from '.';

describe('MyElement', () => {
  it('has a default title "World" and count 0', async () => {
    const el = await fixture<MyElement>(html`
      <my-element></my-element>
    `);

    expect(el.name).to.equal('World');
    expect(el.count).to.equal(0);
  });
});

所以我相信这与转译打字稿有关,但我还没有成功地找出它到底是什么。有人注意到任何错误会导致这些属性现在未定义吗?

EDIT:

这是原始的 JS 实现,以显示它与 TS 之间的差异。

import {LitElement, html, css} from 'lit';

 export class MyElement extends LitElement {
   static get styles() {
     return css`
       :host {
         display: block;
         border: solid 1px gray;
         padding: 16px;
         max-width: 800px;
       }
     `;
   }
 
   static get properties() {
     return {
       name: {type: String},
       count: {type: Number},
     };
   }
 
   constructor() {
     super();
     this.name = 'World';
     this.count = 0;
   }
 
   render() {
     return html`
       <h1>${this.sayHello(this.name)}!</h1>
       <button @click=${this._onClick} part="button">
         Click Count: ${this.count}
       </button>
       <slot></slot>
     `;
   }
 
   _onClick() {
     this.count++;
     this.dispatchEvent(new CustomEvent('count-changed'));
   }

   sayHello(name) {
     return `Hello, ${name}`;
   }
 }
 
 window.customElements.define('my-element', MyElement);

你能试一下吗

@property({type: String}) name = 'World';

https://lit.dev/docs/api/decorators/#property

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

未定义的属性测试 Lit typescript Web 组件 的相关文章

  • 应用程序关闭时监听 firebase 数据库更改

    我正在使用 firebase 创建一个 Ionic 2 应用程序 当应用程序关闭时 即在前台 后台和终止 我需要一种方法来侦听数据库更改 特别是在 child added 上 基本上 我想使用 WebRTC 在应用程序内拨打电话 例如 Wh
  • Android 上的 setTimeOut() 相当于什么?

    我需要等效的代码setTimeOut call function milliseconds 对于安卓 setTimeOut call function milliseconds 您可能想查看定时任务 http developer andro
  • Hamcrest 泛型地狱 #2:iterable With Size 给出错误“不适用于参数”

    在 hamcrest 中 1 3 RC2 没有 JUnit 依赖项 我使用失败iterableWithSize 我有一个 扩展 Iterator参数化为Content像这样EndResult
  • 使用 JS 和 HTML 将当前 URL 插入链接

    所以 我已经阅读了类似的内容 但我仍然找不到更适合我正在做的事情的答案 我正在尝试使用 JS 获取当前页面 URL 并将其附加到社交媒体共享链接 如下所示 a href target blank 使用 Javascript 我成功地将当前
  • 如何从回调函数中获取值

    我对 javascript 比较陌生 并且面临一些困难 我有两个 java 脚本文件 如下所示 我无法获取变量的值条目标题在 getRss 函数内并将其存储在变量内Rss1 标题 and Rss2 标题 创建一个全局变量并将其分配给条目标题
  • 所有属性的 JavaScript getter

    长话短说 我现在的情况是想要一个 PHP 风格的 getter 但是是 JavaScript 的 我的 JavaScript 仅在 Firefox 中运行 因此 Mozilla 特定的 JS 对我来说没问题 我能找到的制作 JS gette
  • 不明白为什么 Chrome/Safari 无法在此处获取 ScrollHeight

    我只是问了一个问题 为什么某些 js 代码不能 100 在 Chrome 和 Safari 中工作 但经过更多故障排除后 我想我发现这是我应该发布的问题 我有一个页面 其中有一个表单 该表单的目标是同一页面上的 iframe iframe
  • 需要了解Javascript函数提升示例

    我阅读了 Javascript 提升的概念 它非常令人困惑 但我看到了一些示例并了解了提升的实际作用 所以基本上 提升是 JavaScript 的默认行为 即将所有声明移动到当前作用域的顶部 当前脚本或当前函数的顶部 但我无法理解以下实现
  • 如何从 dataurl 在服务器上创建图像文件

    我有一个 dataurl 格式的图像 例如 data image jpeg base64 9j 4AAQSkZJRgABAQAAAQABAAD 2wBDAAMCAgMCAgMDAwMEAwME iiigAooooAKKKKACiiigAoo
  • 如何在 ES6 类中使用静态变量?

    我正在尝试在 es6 中使用静态变量 我想声明一个静态变量count in Animal类并增加它 但是 我无法通过声明静态变量static count 0 所以我尝试了另一种方法 class Animal constructor this
  • 为什么 `BehaviorSubject` 不发出最后一个值

    The 关于BehaviorSubject的文档 http reactivex io documentation subject html声明它应该返回最后发出的值 无论我何时订阅 但它不会为我返回它 const ofObservable
  • 将回调函数与原型函数一起使用

    在执行回调时 我无法弄清楚如何传递对象方法而不是排序 通用原型 方法 function Client this name hello Client prototype apiCall function method params callb
  • 同步通用分析

    新的Universal Analytics重新引入了同步事件跟踪 https developers google com analytics devguides collection analyticsjs method reference
  • 使用 Java 进行 AES 加密并使用 Javascript 进行解密

    我正在制作一个需要基于 Java 的 AES 加密和基于 JavaScript 的解密的应用程序 我使用以下代码作为基本形式进行加密 public class AESencrp private static final String ALG
  • 如何使用 Browserify 获取 html 模板

    我正在尝试找出一种简单的方法 在脚本中需要 html 模板 然后从 CLI 运行 browserify 假设我想获取一个模板并将其附加到正文中 index js var template require template html docu
  • 内联 YouTube 视频在 iOS 上的 cordova 应用程序中不起作用

    我用 cordova 开发了一个移动应用程序 我确实需要能够播放内联 YouTube 视频 我尝试了一段时间来解决它 我设置了属性playsinline to 1在 YouTube iframe API 中 I put
  • CasperJS:如何单击所有选定的按钮?

    我正在尝试使用 CasperJS 作为网络抓取工具 并且有一个带有按钮的页面 单击该按钮将加载数据 因此 我想先单击所有这些按钮 然后等待 然后再实际进行查询以获取所有必要的数据 问题是对于 Casper casper thenClick
  • jQuery 存储类型未定义

    我用了一个jQuery 存储 https ui5 sap com api jQuery sap storage存储数据 oStore jQuery sap storage jQuery sap storage Type local oSto
  • Grails 测试默认在测试环境中运行吗?

    是否有必要提供这样的环境grails test test app Grails 测试确实运行在test默认环境 一般来说 Grails 命令默认为dev如果没有指定 但是test app命令覆盖环境test如果没有指定 并且war命令默认为
  • angular-cli:Karma-Webpack 因“没有此类文件或目录”而失败

    我从Tour of Heroes使用标准 Angular systemjs 现在我正在使用angular client它在开发 生产模式下运行顺利 但我无法测试任何东西ng test 以下内容会被吐出 不仅适用于test ts但也为了pol

随机推荐

  • 用户定义类型作为 PostgreSQL 函数中的输入参数

    您好 我正在创建一个用于插入元数据的过程 我创建了类型 并在另一种类型中包含了一种类型 并且在过程中我对其进行迭代以获取值 由于我是 PostgreSQL 的新手 任何人都可以帮助我如何调用该过程 输入参数为类型 Create Type F
  • Netbeans 7.1.2 - 无法添加 glassfish 服务器 3.1.2

    我从下载 glassfish 服务器http glassfish java net downloads 3 1 2 2 final html并单独安装 现在我正在尝试将其添加到 Netbeans 中 但这不起作用 我做了以下步骤 以管理员身
  • 训练神经网络时资源耗尽 - keras

    我有一个包含 65668 个文件的数据集 我使用 Keras 作为 CNN 这些是我的层 embedding layer Embedding len word index 1 EMBEDDING DIM weights embedding
  • 张量流相当于 torch.gather

    我有一个形状张量 16 4096 3 我有另一个形状索引张量 16 32768 3 我正在尝试收集价值观dim 1 这最初是在 pytorch 中使用聚集功能如下所示 a shape 16L 4096L 3L idx shape 16L 3
  • 分割十六进制的最佳方法?

    一般来说 我对十六进制还很陌生 并且我有一个应用程序需要我分割十六进制数 例如 给定数字 0x607F 我需要返回高 0x60 或低 0x7F 字节 这是可能的实现 但感觉有点麻烦 在 python 中是否有更标准的方法来做到这一点 def
  • 使用 jq 将对象的嵌套 JSON 转换为数组到 bash 数组

    我正在做一些根本错误的事情 但只是看不出是什么 有人可以指出我在 jq 或 JSON 方面的错误吗 我在数组中包含以下子对象 entries profile name TesterRun1 download entries ENTRY A
  • 使用 SIMD,如何有条件地仅移动 alpha 通道值为 255 的像素?

    我目前正在向量化一些代码以使用 AVX2 内在函数存储 32 位像素数据 由于 AVX2 寄存器是 256 位 因此我可以同时操作 8 个像素 我目前的代码可以从一个缓冲区加载 8 个像素 然后将它们存储到另一个缓冲区 Load 256 b
  • 实体框架级联删除

    首先 如果我在这里遗漏了一些基本的东西 我深表歉意 但我是 EF 的新手 并且仍然首先考虑设置数据库代码 我遇到了与此类似的问题引入 FOREIGN KEY 约束可能会导致循环或多条级联路径但似乎无法从那里的评论中找出我需要对我的特定模型做
  • 如何在awk中将驼峰式字符串拆分为数组?

    如何使用 split 函数将驼峰式字符串拆分为 awk 中的数组 Input STRING camelCasedExample 期望的结果 WORDS 1 camel WORDS 2 Cased WORDS 3 Example 糟糕的尝试
  • 实体框架代码优先迁移认为存在不应该存在的更改

    我有一个网站和一个 Windows 服务 它们都引用同一个项目来获取实体框架数据上下文 每次启动 Windows 服务时 实体框架都会运行自动迁移 将数据库列之一从 NOT NULL 更改为 NULL 不进行其他更改 该列的属性被标记为 R
  • 如何使用R中的函数替换数据框中的字符值

    我有一个数据框 max1 max2 max3 max4 max5 max6 max7 max8 max9 max10 x9 x8 x7 x6 x10 x5 x4 x2 x1 x3 x5 x3 x4 x6 x10 x1 x7 x2 x8 x9
  • Pandas:混合数据类型的列;如何找到异常情况

    我有一个很大的数据框 当阅读它时 它给了我这样的消息 DtypeWarning 列 0 8 具有混合类型 导入时指定 dtype 或设置 low memory False 它应该是一列浮标 但我怀疑里面藏着几根绳子 我想识别它们 并可能删除
  • 当CPU处于内核模式时,它可以读写任何寄存器吗?

    当CPU处于内核模式时 它可以读写任何寄存器吗 或者是否有一些寄存器即使在内核模式下也无法访问 在 x86 上 没有分组寄存器 因此所有寄存器在架构上同时可见 是的 在内核模式 环 0 下 x86 可以写入任何寄存器 只要内核运行在64位模
  • 无重叠的圆检测

    我想在以下条件下进行圆检测 重叠圆将计为 1 个圆 Particularly when I do circle detection and put the letter P to every circle actually they are
  • 如何从 Azure DB 表获取数据到 Android 应用程序?

    我是 Azure 新手 我不知道如何连接到我在 Azure 数据库上创建的表 我想获取表数据 SELECT 并将它们填充到 android 的 GridView 中 我知道使用适配器的 填充 部分 我想知道的是如何连接并接收表中的数据 我试
  • 编译器如何处理编译时分支?

    EDIT 我以 if else 情况为例 有时可以在编译时解决 例如 当涉及静态值时 参见
  • SQL - 在分组依据中使用别名

    只是对 SQL 语法感到好奇 所以如果我有 SELECT itemName as ItemName substring itemName 1 1 as FirstLetter Count itemName FROM table1 GROUP
  • JQuery ajax 文件上传到 ASP.NET 并包含所有表单数据

    我正在构建一个网站 该网站有一个职业页面 其中包含用于简历上传的输入文件 HTML 控件 使用 JQuery 将表单值 POST 到 ASPX 页面时 除了文件上传之外 一切正常 如何使用 JQuery 发布一个 AJAX 请求中的每个字段
  • ChartJS 3+ x 轴仅显示完整的时刻对象而不是仅显示月份

    我试图使用 momentjs 在图表的 x 轴上仅显示月份和年份 但它只是将看起来完整的时刻日期放在 x 轴上 我一直在看很多人这样做的例子 但他们似乎都不能在最新版本的 Chartjs 中工作 我知道我已经包含了与 momentjs 一起
  • 未定义的属性测试 Lit typescript Web 组件

    我最近将一个lit web组件转换为Typescript 似乎无法弄清楚为什么我的测试现在失败了 在转换之前一切都工作正常 这些是我的测试依赖项 open wc testing 3 1 2 web dev server esbuild 0