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

JavaScript单元测试报错:Bartender类无法正确实例化Beer类

问题排查与修复方案

核心错误点

  • 参数接收与覆盖问题:测试用例调用takeOrder时传入了5个独立参数(酒厂名、啤酒名、啤酒类型、价格、容量),但你当前的takeOrder方法仅定义了1个形参,且内部直接用var newOrder = new Beer覆盖了外部传入的参数值,导致传入的订单参数完全丢失。
  • Beer实例化参数不匹配:Beer类的构造函数要求传入一个包含brewer/name/type/price/volume属性的对象参数,但你实例化Beer时没有传入任何参数,就算没有参数覆盖问题,也无法生成属性符合要求的Beer实例。

修复后的代码

只需要修改Bartender类的takeOrder方法即可:

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

报错原因说明

你看到的expected 'Grand Teton Brewing' to be an instance of Beer报错,本质是你之前的代码逻辑完全没有正确处理传入的参数,错误地把字符串参数直接存入了orders数组(或是参数覆盖后生成的空Beer实例属性不匹配导致的断言连锁报错),修复后即可通过全部测试用例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:39:04