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

profileActivation函数测试未全部通过,请求排查问题并修复

问题排查与修复:profileActivation函数未通过全部测试

问题描述

实现profileActivation函数时仅通过第3、4项测试,其余测试未通过。函数需求与边界规则如下:

  • 接收两个参数:profile(对象)、reason(字符串,仅停用配置文件时必填)
  • 核心逻辑:
    • 若profile已激活:将其停用,添加reason属性存储停用原因,返回更新后的对象
    • 若profile未激活:将其激活,删除reason属性,返回更新后的对象
  • 边界情况:
    • 未激活且无reason属性 → 返回"confirm status manually"
    • 已激活但有reason属性 → 返回"confirm status manually"
    • 缺少active属性 → 返回"impossible to ascertain status"

原代码问题分析

  1. 未处理active属性缺失的边界情况:直接判断profile.active,忽略了该属性不存在的场景,违反需求规则
  2. 核心逻辑完全倒置:已激活状态下未执行停用操作,反而错误处理激活逻辑;未激活状态的操作也与需求不符
  3. 错误处理reason参数:开头通过reason的值直接修改active,完全违背reason仅用于停用的规则
  4. 边界判断逻辑错误:已激活状态下的reason判断逻辑与需求反向,删除reason的操作无意义

修复方案

修复后的代码

function profileActivation(profile, reason) {
  // 优先检查active属性是否存在
  if (profile.active === undefined) {
    return "impossible to ascertain status";
  }

  // 处理已激活状态:执行停用操作
  if (profile.active) {
    // 边界情况:已激活但存在reason属性
    if (profile.reason !== undefined) {
      return "confirm status manually";
    }
    profile.active = false;
    profile.reason = reason;
    return profile;
  } else {
    // 处理未激活状态:执行激活操作
    // 边界情况:未激活且缺少reason属性
    if (profile.reason === undefined) {
      return "confirm status manually";
    }
    profile.active = true;
    delete profile.reason;
    return profile;
  }
}

修复说明

  • 新增active属性检查:优先判断profile.active是否为undefined,匹配需求中“无法确定状态”的边界规则
  • 修正核心逻辑方向:
    • 已激活状态:将active设为false,添加reason属性,完成停用操作
    • 未激活状态:将active设为true,删除reason属性,完成激活操作
  • 移除错误的reason判断逻辑:不再根据reason的值直接修改状态,而是按照profile当前状态执行对应操作
  • 严格匹配边界情况:
    • 已激活时检查reason是否存在,存在则返回指定字符串
    • 未激活时检查reason是否不存在,不存在则返回指定字符串
  • 确保返回值符合要求:所有正常操作后返回更新后的profile对象,完全匹配需求规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 16:22:48