AssertionError [ERR_ASSERTION]: undefined == 390 in gitlab
Posted
技术标签:
【中文标题】AssertionError [ERR_ASSERTION]: undefined == 390 in gitlab【英文标题】: 【发布时间】:2022-01-16 08:39:42 【问题描述】:我对 有点困惑。
我想要关注:
Τ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
【问题讨论】:
【参考方案1】:让我们看看你写了什么:
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
语句,因此您的函数返回undefined
。这解释了为什么您会收到关于 undefined == 390
的断言:undefined
是您的函数返回的内容,390
是您的测试期望返回的内容。
那么你怎么能解决这个问题呢?
首先,将函数参数名称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的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在 Selenium 中收到 AssertionError?