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

使用Vitest的expect.closeTo报错:expect.closeTo is not a function

问题解决:Vitest中expect.closeTo报错及TypeScript类型错误

你遇到的两个错误(TypeError: expect.closeTo is not a function和TS的Property 'closeTo' does not exist on type 'ExpectStatic')原因一致:closeTo不是expect的静态方法,而是断言实例的链式方法,同时你用toBe比较对象的方式也不正确。

错误原因拆解

  • closeTo的正确用法是expect(实际数值).closeTo(预期数值, 精度),而非直接调用expect.closeTo()
  • toBe用于严格相等判断,两个对象字面量(比如{value:3}和{value: ...})是不同的引用,永远不会匹配,应该用toEqual做结构相等校验

修正后的代码

import { describe, it, expect } from "vitest";

describe("sum test", () => {
  it("adds 1 + 2 to equal 3", () => {
    // 方式1:直接提取数值做近似断言
    const result = 1 + 2;
    expect(result).closeTo(3);
  });

  it("对象中的数值近似相等", () => {
    // 方式2:对对象属性单独做近似断言
    const obj = { value: 1 + 2 };
    expect(obj.value).closeTo(3);

    // 方式3:结合objectContaining对对象结构做校验
    expect(obj).toEqual(expect.objectContaining({
      value: expect.closeTo(3)
    }));
  });
});

补充说明

你的Vitest版本(0.34.0)完全支持closeTo方法,但必须遵循正确的调用方式:只有在expect(xxx)返回的断言对象上,才能调用closeTo这类链式断言方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 04:05:58