小编Moh*_*med的帖子

Jest/React 模拟 scrollBy 和 .getBoundingClientRect 函数

我有一个函数 handleClick,它在元素上使用 scrollBy,该元素使用 getBoundingClientRect 获取其第一个参数。我正在尝试使用玩笑/酶来测试这个。

class myClass extends Component  {
    ...
    ...
    handleClick () {
        document.getElementById('first-id').scrollBy(document.getElementById('second-id').getBoundingClientRect().width, 0);
    }

    render() {
        return (
            <button className="my-button" onClick={this.handleClick()}>scroll</button>
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

我的测试:

it('calls scrollBy with correct params', () => {
    const props = {};
    myClassWrapper = mount(<myClass {...props} />);
    const scrollBySpy = jest.fn();
    global.document.getElementById = jest.fn(() => ({ scrollBy: scrollBySpy }));

    myClassWrapper.find('my-button').simulate('click');
    // expect(scrollBySpy).toHaveBeenCalledWith()
});
Run Code Online (Sandbox Code Playgroud)

我正在尝试测试是否使用正确的参数调用了 scrollBy,但是在运行此测试时出现以下错误:

Error: Uncaught [TypeError: document.getElementById(...).getBoundingClientRect is not a function] 
Run Code Online (Sandbox Code Playgroud)

抱歉,如果之前已经回答过这个问题,但我看不到任何可以回答我的情况的内容。先感谢您。

javascript mocking spy reactjs jestjs

3
推荐指数
1
解决办法
6233
查看次数

从数组javascript返回最小的连接

我有这个代码适用于这个数组:['45','30','50','1'].

function penalty(a_list) {
  return a_list.sort((a, b) => a - b).join('');
}
Run Code Online (Sandbox Code Playgroud)

例如:假设a_list是['45','30','50','1'],那么最小的字符串将是'1304550',这是正确的,但是如果a_list是['32','3'则该怎么办?鉴于这个当前代码,我将得到'332',这是不正确的,因为'323'是最小的可能字符串.希望有所帮助.

javascript arrays sorting concat

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

JavaScript 本身的源代码位于哪里?

我不知道这是否是一个愚蠢的问题。但如果我想了解 JavaScript 本身,甚至为 JavaScript 做出贡献,我该去哪里呢?我短暂地遇到了https://github.com/tc39,但不确定这是否是正确的地方。

\n

我想实际看看 .toString() 之类的东西的实现,看看它背后的代码。

\n

javascript ecma ecmascript-5 ecmascript-6

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