AssertionError [ERR_ASSERTION]: gitlab 中的 undefined == 390

AssertionError [ERR_ASSERTION]: undefined == 390 in gitlab

我有点混淆 AssertionError [ERR_ASSERTION]: undefined == 390 in gitlab .

我想要以下内容:

Τhe sumSalaries (obj) 函数, 接受字段名称所在的对象 obj 作为参数 对应一个员工的名字,而对应的值是o 每个员工的工资。

取下面这段代码:

export default function sumSalaries(obj) {


  let salaries = {
    John: 100,
    Jane: 160,
    Mike: 130
  };

  let sum = 0;
  for (let key in salaries) {
    if (salaries.hasOwnProperty(key)) {
      sum += salaries[key];
    }
  }
  obj = sum;
  console.log(obj);

}

sumSalaries();

测试必须执行以下操作:

import sumSalaries from "../test.js";
import assert from "assert";

describe("\n\ntest.js", () => {
  it("should return the correct sum", () => {
    [
      [
        {
          John: 100,
          Ann: 160,
          Pete: 130,
        },
        390,
      ],
      [
        {
          John: 80,
          Jane: 160,
          Mike: 190,
        },
        430,
      ],
      [
        {
          Charlie: 84,
          Victor: 160,
          Pete: 200,
        },
        444,
      ],
    ].map((obj) => {
      let salaries = obj[0];
      let sum = obj[1];
      assert.equal(sumSalaries(salaries), sum);
    });
  });
});

gitlab给我的错误:

AssertionError [ERR_ASSERTION]: undefined == 390

让我们看看你写了什么:

export default function sumSalaries(obj) {

  let salaries = {
    John: 100,
    Jane: 160,
    Mike: 130
  };

您的函数应该计算传入的薪水总和,但您只是将自己的固定列表放在这里。因此,您的函数只会计算这三个薪水的总和。

然后您继续将这些薪水相加,这似乎没问题:

  let sum = 0;
  for (let key in salaries) {
    if (salaries.hasOwnProperty(key)) {
      sum += salaries[key];
    }
  }

参数obj包含传入的薪水,但在这一行之后它现在包含您从固定列表中计算出的薪水总和:

  obj = sum;

然后你把这个总和写到控制台。也许对调试有用,但一旦完成调试,请删除此行。

  console.log(obj);

函数结束时没有遇到return语句,所以你的函数returns undefined。这解释了为什么你得到关于 undefined == 390 的断言:undefined 是你的函数 return 编辑的,而 390 是你的测试期望 return 的。

}

那么如何解决这个问题?

首先,将函数参数的名称 obj 更改为 salaries 并去掉硬编码的薪水。这允许您的函数计算给定的薪水总和。

其次,计算总和后,return它。

你应该得到以下结果,经过测试,它似乎有效:

export default function sumSalaries(salaries) {
  let sum = 0;
  for (let key in salaries) {
    if (salaries.hasOwnProperty(key)) {
      sum += salaries[key];
    }
  }
  return sum;
}