Javascript 测试失败

Javascript 测试失败,javascript,node.js,oop,jestjs,Javascript,Node.js,Oop,Jestjs,当数据库中有相同的类别名称时,我在测试我的应用程序(用于研究)时遇到问题。虽然类别不会再次添加到表中,但测试不会通过 当我添加一个不在库中的新类别时,它会显示Matcher Error:收到的值必须是一个函数,但预期的内容不能测试变量 我不知道我会错在哪里 类刀 export default class CategoryDAO { constructor(conn) { this._conn = conn } async add(category) { if (!(c

当数据库中有相同的类别名称时,我在测试我的应用程序(用于研究)时遇到问题。虽然类别不会再次添加到表中,但测试不会通过

当我添加一个不在库中的新类别时,它会显示Matcher Error:收到的值必须是一个函数,但预期的内容不能测试变量

我不知道我会错在哪里

类刀

export default class CategoryDAO {
  constructor(conn) {
    this._conn = conn
  }
  async add(category) {
    if (!(category instanceof Category)) {
      throw new Error("The object is not of type category")
    }
    try {
      const categories = await this._conn.query(`SELECT * FROM category`)
      
      if (categories.some(c => c.name === category.name)) {
        throw new Error("The category has already been registered")
      }
      await this._conn.query(`INSERT INTO category (name) VALUES (?)`, [category.name])
    } catch (error) {
      throw new Error(error)
    }
  }
}

试验

日志


这是一个猜测,但这是基于您链接到的文档中的模式:

await expect(categoryDAO.add(category)).rejects.toThrow({
  ... // Your error.
});

expect(category)
什么都不做。它只是看一个变量。你想用它做点什么吗?你的意思是
expect(wait categoryDAO.add(category)).toThrow(…)
?你可能需要使用箭头函数。嗨,@tadman,谢谢你的回答。我已经尝试过这种方法,但是我得到了相同的错误
expect(received)。toThrow(expected)匹配器错误:接收的值必须是函数接收的值:未定义25 | const category=new category(“Devopss”)26 |//wait categoryDAO.add(category)expect(wait categoryDAO.add(category)).toThrow(新错误(`类别已注册')
我认为丹尼尔的想法是对的。但是@DanielA.White and tadman我已经在使用箭头功能了,不是吗?谢谢@tadman我用拒收品和expect对它进行了多次测试,但expect只对类别进行了测试。它与toThrow一起工作,方式是:
等待expect(categoryDAO.add(category)).rejects.toThrow(
该类别已注册
Tests for Class Category › Add must throw error when another author is registered

    Error: The category has already been registered

      17 |       await this._conn.query(`INSERT INTO category (name) VALUES (?)`, [category.name])
      18 |     } catch (error) {
    > 19 |       throw new Error(error)
         |             ^
      20 |     }
      21 |   }
      22 | }
await expect(categoryDAO.add(category)).rejects.toThrow({
  ... // Your error.
});