Javascript 测试失败
当数据库中有相同的类别名称时,我在测试我的应用程序(用于研究)时遇到问题。虽然类别不会再次添加到表中,但测试不会通过 当我添加一个不在库中的新类别时,它会显示Matcher Error:收到的值必须是一个函数,但预期的内容不能测试变量 我不知道我会错在哪里 类刀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
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.
});