小编Sac*_*ngh的帖子

是否可以在 JEST 单元测试中将 event.isTrusted 设置为 true?

我正在处理JavaScript事件。根据以下 MDN 文章,事件对象有一个名为 的标志isTrustedhttps://developer.mozilla.org/en-US/docs/Web/API/Event/isTrusted

我编写了一段代码,用于区分用户事件(由于实际用户操作而触发)和编程事件(由于 而触发)element.dispatchEvent(...)。我无法显示整个代码,但它如下所示:

document.addEventListener('click', (event) => {
  if (event.isTrusted) {
    // ... client code follows
    // somewhere in the code I am dispatching another custom event on body element
    document.body.dispatchEvent(...);
  }
});
Run Code Online (Sandbox Code Playgroud)

我正在尝试在(一个流行的单元测试库)中对这段代码进行单元测试JEST。不幸的是,我们无法模拟真实的点击事件,因为它是为您执行此操作的自动代码。在 JEST 中,该标志isTrusted始终设置为false,从而限制我测试客户端代码。

我无法直接更改 的值,isTrusted因为它是只读属性。我正在寻找可以模拟该事件并将isTrusted标志设置为 的方法true


编辑:添加测试代码:


describe('Event.isTrusted', () => {
  beforeAll(() => {
    document.body.dispatchEvent = jest.fn();
    const btn = document.createElement('button');
    btn.id = 'btn'; …
Run Code Online (Sandbox Code Playgroud)

javascript events unit-testing readonly dom-events

6
推荐指数
1
解决办法
2671
查看次数

在汇总 ESM 库中导入 uuid 会在输出文件中为“crypto”创建一个导入语句

编辑:添加插件配置更清晰


uuid在汇总项目中使用包。起初,我收到了外部依赖加密的警告。所以我在我的汇总配置中添加了externaloutput.globals

export default [{
  input: '/path/to/input.js',
  external: ['crypto'],
  output: {
    file: '/path/to/output.esm.js',
    format: 'esm',
    ...
    globals: {
      crypto: 'crypto'
    }
  },
  plugins: [
    resolve({
      customResolveOptions: {
        moduleDirectory: 'node_modules'
      },
      preferBuiltins: true
    }),
    commonjs({
      namedExports: {
        uuid: ['v4']
      }
    })
  ]
}];
Run Code Online (Sandbox Code Playgroud)

警告消失了,但现在我的输出文件中有一个导入语句:

输出.esm.js

import crypto from 'crypto';
...
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果我包含output.esm.js在浏览器中,这会起作用吗?

<script type="module" src="/path/to/output.esm.js"></script>
Run Code Online (Sandbox Code Playgroud)

uuid dependencies guid rollup cryptojs

4
推荐指数
1
解决办法
1185
查看次数

是否有替代T-SQL中的LIKE语句?

我有一个场景,我需要执行以下操作:

SELECT *
FROM
[dbo].[MyTable]
WHERE
[Url] LIKE '%<some url>%';
Run Code Online (Sandbox Code Playgroud)

我必须在Url('%<some url>%')的开头和结尾使用两个%(通配符),因为用户应该能够搜索完整的URL,即使他键入了部分文本.例如,如果网址为http://www.google.co.in且用户输入"goo",则网址必须出现在搜索结果中.LIKE运营商正在导致性能问题.我需要一个替代方案,以便我可以摆脱这个声明和通配符.换句话说,我不想在这种情况下使用LIKE语句.我尝试使用T-SQL,CONTAINS但它没有解决我的问题.除了可以执行模式匹配并快速提供结果之外,还有其他可用选择吗?

sql t-sql sql-server contains sql-like

2
推荐指数
1
解决办法
2万
查看次数