小编Jon*_*n G的帖子

在字符串上找不到 .substring 函数

在这个片段中,我试图从链接的 href 中提取一个子字符串。

let current_link = $(data, ownerDocument).find('#footbar>span>a[href^="/shortlinks"]').attr('href');
let current_number = current_link.substr(current_link.indexOf('/dex/')+5);
Run Code Online (Sandbox Code Playgroud)

出于某种原因,当我在第二个中断点并在控制台中评估该行时,我得到了我期望的子字符串,但是当我让脚本在没有断点的情况下运行时,我收到以下错误:

jQuery.Deferred exception: current_link.substr(...) is not a function
TypeError: current_link.substr(...) is not a function
Run Code Online (Sandbox Code Playgroud)

我添加了一些调试来向自己证明这current_link实际上是一个字符串:

let current_link = $(data, ownerDocument).find('#footbar>span>a[href^="/shortlinks"]').attr('href');
console.log(typeof(current_link)) // debugging
console.log(Object.getPrototypeOf(current_link)); // debugging
let current_number = current_link.substr(current_link.indexOf('/dex/')+5);
Run Code Online (Sandbox Code Playgroud)

打印出的两个 console.log 行:

> string
> String {"", constructor: ƒ, anchor: ƒ, big: ƒ, blink: ƒ, …}
>     anchor: ƒ anchor()
      ...
>     substr: ƒ substr()
      ....
>     __proto__: Object
>     [[PrimitiveValue]]: ""
Run Code Online (Sandbox Code Playgroud)

我已经回顾了三个相似但我认为不适用的问题,因为通过原型我知道这current_link是一个字符串: …

javascript

6
推荐指数
0
解决办法
97
查看次数

在玩笑中模拟 jQuery $() 和 $ 函数

我对 ES6 类中使用$.get(). 我能够嘲笑$.get()。我正在测试使用$.get()and的同一个类中的另一个函数$(data, ownerDocument).find(),但我无法弄清楚如何为该函数添加模拟$().find()

我是如何嘲笑的$.get()

const jQuery = require(path/to/jquery);
jest.mock(path/to/jquery);

describe("Description", () => {
  test("Test", () => {
    // multiple tests with different mocks of $.get, so clearing
    jQuery.get.mockClear();
    jQuery.get.mockImplementation((path) => path);
    // test function that uses $.get
  });
});
Run Code Online (Sandbox Code Playgroud)

根据笑话文档中的这一部分,我尝试使用 2 个参数版本为 jQuery 构造函数添加模拟jest.mock

// jest.mock(path/to/jquery);
jest.mock(path/to/jquery, () => {
  return jest.fn().mockImplementation(arg1, arg2) => {
    return {
      find: () => console.log('find'); // …
Run Code Online (Sandbox Code Playgroud)

jquery jestjs

5
推荐指数
1
解决办法
5700
查看次数

有没有办法在运行时获取当前(当前未执行)文件的目录?

我有一个.pm文件,让我们称之为A.pm,我在另一个文件B.pl中使用它,它存在于一个单独的目录中.在A.pm中,我想引用存在于同一目录中的外部非perl文件.为了避免硬编码该外部文件的路径,我想获得A.pm在运行时生活的目录.

我尝试过使用$ FindBin :: Bin和File :: Spec-> rel2abs('.'),但我了解到那些指向当前正在执行的脚本的目录,而不是当前文件.$ 0也为我提供了当前正在执行的脚本的名称.

有没有办法获得目录A.pm除了在A.pm的硬编码路径之外生活?

编辑:我还应该注意,我已经尝试仅使用相对于A.pm的路径引用外部文件,但在执行期间,代码在B.pl所在的目录中查找外部文件,因此这也不起作用.

perl

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

标签 统计

javascript ×1

jestjs ×1

jquery ×1

perl ×1