Javascript 使用Mocha在React中的渲染SVG组件上测试道具
我正在为一个方法编写单元测试,该方法呈现两个不同的SVGJavascript 使用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
元素(每一行在此称为“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);
})