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

JS单元测试中如何在Bartender类方法内实例化Beer类解决测试报错

问题原因

你目前的代码存在3处核心问题,完全不匹配测试用例的预期:

  • takeOrder方法仅定义了1个形参,但测试用例调用时传入了5个独立参数,分别对应啤酒的厂商、名称、类型、价格、容量
  • 你在takeOrder内部重新声明了newOrder变量,直接覆盖了传入的参数,且实例化Beer时没有传入任何参数,不符合Beer构造函数要求传入配置对象的规则
  • 实例化的空Beer对象没有任何符合预期的属性,自然无法通过断言

修改方案

直接修改Bartender类的takeOrder方法即可,修改后代码如下:

class Bartender {
  constructor(name, hourlyWage){
    this.name = name;
    this.hourlyWage = hourlyWage;
    this.orders = [];
  }
  // 调整形参列表匹配测试传入的参数顺序
  takeOrder(brewer, name, type, price, volume) {
    // 组装Beer构造函数要求的配置对象,实例化后推入orders数组
    const newBeer = new Beer({
      brewer,
      name,
      type,
      price,
      volume
    });
    this.orders.push(newBeer);
  }
}

验证说明

修改后重新运行测试即可通过所有断言:

  1. 生成的实例是Beer类的实例,符合instanceOf断言要求
  2. orders数组长度为1,符合计数要求
  3. 传入的5个参数都正确赋值到Beer实例的对应属性,所有属性断言都会通过

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:18:04