Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ReactJS和jest:如何为element.offsetWidth使用模拟值?_Javascript_Reactjs_Testing_Jestjs - Fatal编程技术网

Javascript ReactJS和jest:如何为element.offsetWidth使用模拟值?

Javascript ReactJS和jest:如何为element.offsetWidth使用模拟值?,javascript,reactjs,testing,jestjs,Javascript,Reactjs,Testing,Jestjs,我有一个组件,它通过编程创建一个span元素并向其中添加文本,然后检查其偏移宽度。在我的测试中,该值为0。我想知道如何“强制”它到另一个任意值进行测试 我尝试了以下方法,但没有成功: Object.defineProperty(HTMLElement.prototype, 'offsetWidth', { configurable: true, value: 500 }) 谁能给我指一下正确的方向吗?谢谢 Github: 这是组件测试文件的链接:为了解决这个问题,我使用了一种称为依赖项注入的技

我有一个组件,它通过编程创建一个span元素并向其中添加文本,然后检查其
偏移宽度
。在我的测试中,该值为0。我想知道如何“强制”它到另一个任意值进行测试

我尝试了以下方法,但没有成功:

Object.defineProperty(HTMLElement.prototype, 'offsetWidth', { configurable: true, value: 500 })
谁能给我指一下正确的方向吗?谢谢

Github:


这是组件测试文件的链接:

为了解决这个问题,我使用了一种称为依赖项注入的技术()

基本上通过道具进行测试并在代码中使用:

// for testing purposes use props.testRulerSpanWidth
// if it exists, otherwise use the default rulerSpan.offestWidth

const rulerSpanWidth = props.testRulerSpanWidth ?
                        props.testRulerSpanWidth
                       :
                        rulerSpan.offsetWidth;

为了解决这个问题,我使用了一种称为依赖注入()的技术

基本上通过道具进行测试并在代码中使用:

// for testing purposes use props.testRulerSpanWidth
// if it exists, otherwise use the default rulerSpan.offestWidth

const rulerSpanWidth = props.testRulerSpanWidth ?
                        props.testRulerSpanWidth
                       :
                        rulerSpan.offsetWidth;