Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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 使用Mocha在React中的渲染SVG组件上测试道具_Javascript_Reactjs_Unit Testing_Svg_Mocha.js - Fatal编程技术网

Javascript 使用Mocha在React中的渲染SVG组件上测试道具

Javascript 使用Mocha在React中的渲染SVG组件上测试道具,javascript,reactjs,unit-testing,svg,mocha.js,Javascript,Reactjs,Unit Testing,Svg,Mocha.js,我正在为一个方法编写单元测试,该方法呈现两个不同的SVG元素(每一行在此称为“wick”)。传递给此方法的道具是:{x1,x2,y1,y2},并且在我的组件的render()方法中调用该方法两次 在为整个组件编写测试时,我正在努力测试wick的两个道具。这是我目前正在运行的: it("should render a wick line", () => { const wrapper = shallow(<Candle {...baseProps}/>); const w

我正在为一个方法编写单元测试,该方法呈现两个不同的SVG
元素(每一行在此称为“wick”)。传递给此方法的道具是:
{x1,x2,y1,y2}
,并且在我的
组件的
render()
方法中调用该方法两次

在为整个组件编写测试时,我正在努力测试wick的两个道具。这是我目前正在运行的:

it("should render a wick line", () => {
  const wrapper = shallow(<Candle {...baseProps}/>);
  const wicks = wrapper.find("line");
  const values = [
    {
      x1: 5,
      x2: 5,
      y1: 30,
      y2: 5
    }, {
      x1: 5,
      x2: 5,
      y1: 10,
      y2: 5
    }];

  wicks.forEach((wick) => {
    expect(wick.prop("x1")).to.eql(values.x1);
    // expect(wick.prop("x2")).to.eql(5);
    // expect(wick.prop("y1")).to.eql(values.y1);
    // expect(wick.prop("y2")).to.eql(5);
  });
});
正如在我的评论中所看到的,我尝试预测一个指定的数值,并测试对象数组中的
中的相应键

有没有更好的办法?还是我的代码中缺少了一些明显的东西?

尝试
expect(wick.prop(“x1”)).to.eql(值[0].x1)

您可以用这个替换forEach

wicks.forEach((wick, i) => {
  expect(wicks[i].prop("x1")).to.eql(values[i].x1);
  expect(wick.prop("x2")).to.eql(5);
  expect(wick.prop("y1")).to.eql(values.y1);
  expect(wick.prop("y2")).to.eql(5);
})

prop
props
都运行一个测试,唯一的区别是
props
返回这个失败消息:
期望{Object(x1,x2,…)}与未定义的
。。。而不是我最初的失败,它更接近我想要的输出。
prop[key]
似乎更适合测试单个道具。我最初发布的这条警告(对我)表明,我没有从
值中提取正确的属性,而不是相反:
预期5将完全等于未定义的
是的,我刚刚更新了它。我把它倒过来了。您可能需要考虑使用for循环而不是使用更新的解决方案的前次问题,即<代码>值< /代码>的索引赋值将忽略传递到我的数组中的第二个OBJ,这是我需要测试的。
wicks.forEach((wick, i) => {
  expect(wicks[i].prop("x1")).to.eql(values[i].x1);
  expect(wick.prop("x2")).to.eql(5);
  expect(wick.prop("y1")).to.eql(values.y1);
  expect(wick.prop("y2")).to.eql(5);
})