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?

如何修复此lang.AssertionError?

cx_freeze 帮助 AssertionError

Pytest 触发 AssertionError:

AssertionError:Torch 未在启用 CUDA 的情况下编译

阅读excel时大熊猫的AssertionError