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;
}
我有点混淆 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;
}