You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Cypress验证React应用中Chart.js柱状图的柱状数量?

验证Chart.js柱状图的柱子数量(Cypress测试)

你的当前代码存在问题:cy.get("#goodBadBar")获取的是整个柱状图的容器(或Canvas元素),它本身是单个DOM元素,所以have.length, 2的断言必然失败。要验证柱子数量,需要针对Chart.js的实例或其关联数据来做断言,以下是可行方案:

方案1:通过Chart.js实例验证数据(推荐)

Chart.js会将图表实例挂载到对应的Canvas元素上,你可以直接访问实例的data属性来验证柱子数量(柱子数量对应数据集中的数据点个数,或标签的数量):

cy.visit("http://localhost:3000/totals");
cy.get("#goodBadBar canvas")
  .should("be.visible")
  .then($canvas => {
    // 获取Chart.js实例
    const chartInstance = $canvas[0].chart;
    // 验证单个数据集的柱子数量(假设你的柱状图只有一个数据集)
    expect(chartInstance.data.datasets[0].data.length).to.equal(2);
    // 或者验证标签数量(标签数通常等于柱子数)
    // expect(chartInstance.data.labels.length).to.equal(2);
  });

方案2:针对Canvas图形元素断言(不推荐)

如果必须验证Canvas上绘制的图形,你可以使用Cypress的cy.get(canvas).invoke('getContext', '2d')获取画布上下文,然后检查绘制路径,但这种方法维护性差——Chart.js的渲染细节可能随版本变化,因此优先使用方案1。

内容的提问来源于stack exchange,提问作者joshpopelka20

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 12:01:20