Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.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 如何使用Jest和/或Ezyme获取嵌套在React组件中的元素的属性?_Javascript_Reactjs_Jestjs_Enzyme - Fatal编程技术网

Javascript 如何使用Jest和/或Ezyme获取嵌套在React组件中的元素的属性?

Javascript 如何使用Jest和/或Ezyme获取嵌套在React组件中的元素的属性?,javascript,reactjs,jestjs,enzyme,Javascript,Reactjs,Jestjs,Enzyme,我想测试查看图像是否已正确加载到React应用程序中。我决定检查嵌套在React组件中的img元素的src属性。我想使用Jest测试框架,如果需要,还可以使用酶测试实用程序 通过挖掘浅层React测试组件的Object.keys,我能够想出以下解决方案。我不确定的那条线用星号表示 import React from 'react'; import {shallow} from 'enzyme'; import App from './App'; it('should hav

我想测试查看图像是否已正确加载到React应用程序中。我决定检查嵌套在React组件中的
img
元素的
src
属性。我想使用Jest测试框架,如果需要,还可以使用酶测试实用程序

通过挖掘浅层React测试组件的
Object.keys
,我能够想出以下解决方案。我不确定的那条线用星号表示

import React     from 'react';
import {shallow} from 'enzyme';
import App       from './App';

it('should have the logo image', () => {
  const app = shallow(<App />);
  const img = app.find('img');
  const src = img.node.props.src; // ******
  expect(src).toBe('logo.svg');
});
从“React”导入React;
从“酶”导入{shall};
从“./App”导入应用程序;
它('应该有徽标图像',()=>{

const app=shallow(关于React元素属性对我来说似乎不是很好的答案,尽管那里的海报也表明很难找到关于断言呈现属性值的文档。还有一些其他问题(例如,和)处理React/Jest/Enzyme,但不处理检索属性值。

经过一些挖掘,我发现了以下内容。问题中的指示行:

const src = img.node.props.src;
可以简化为以下内容:

const src = img.prop('src');
可以找到文档

如果有人知道一种非酶的方法可以做到这一点,我仍然有兴趣听到它。

与React:

it('应该有徽标图像',()=>
const app=TestUtils.renderIntoDocument();
var image=TestUtils.findrenderedomcomponentwithtag(应用程序“img”);
expect(image.getDOMNode().getAttribute('src')).toEqual('logo.svg');
});

酶测试看起来更干净。

.node在经过一些艰苦的工作后不工作了,我发现以下内容与上述问题的答案100%相关

  const src = img.getElement().props.src;

对我来说,效果如下

expect(companySelect.find('input').props()[“disabled”]).toBe(true)

props()
返回具有选择器所有属性的对象,然后可以将其作为对象浏览

希望这也有帮助

对我来说,这很有效

expect(component.find('button').props().disabled).toBeTruthy();
库提供了一个自定义匹配器。扩展
expect
子句后

import'@testinglibrary/jest-dom/extend-expect'
我们可以这样断言

const rect=document.querySelector(“[data testid=“my rect”]”)
expect(rect).toHaveAttribute('width','256')

Enzyme
.prop
访问器不检查发出的HTML。它只是确保prop被送入被测组件中。
getDOMNode().getAttribute
是您所需要的。Ezyme已经弃用了
.node
方法,并鼓励使用
.getElement
方法。我使用了类似的方法:
mount().find().prop('src')
,除了此方法抛出的错误消息与(应禁用元素haveAttribute)
expect(component.find('button').props().disabled).toBeTruthy();