在这个片段中,我试图从链接的 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是一个字符串: …
我对 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) 我有一个.pm文件,让我们称之为A.pm,我在另一个文件B.pl中使用它,它存在于一个单独的目录中.在A.pm中,我想引用存在于同一目录中的外部非perl文件.为了避免硬编码该外部文件的路径,我想获得A.pm在运行时生活的目录.
我尝试过使用$ FindBin :: Bin和File :: Spec-> rel2abs('.'),但我了解到那些指向当前正在执行的脚本的目录,而不是当前文件.$ 0也为我提供了当前正在执行的脚本的名称.
有没有办法获得目录A.pm除了在A.pm的硬编码路径之外生活?
编辑:我还应该注意,我已经尝试仅使用相对于A.pm的路径引用外部文件,但在执行期间,代码在B.pl所在的目录中查找外部文件,因此这也不起作用.