Javascript 开玩笑地测试。测试在应该抛出时失败
所以我有一个带有select方法的类,它接受ID并返回一个承诺。我想用Jest测试它,如果没有向select()传递参数,我希望测试失败 希望你们中的一些人能引导我走上好的道路,这样我就能解决这个问题 预期行为:如果ID未通过,测试将抛出 实际行为:测试失败,结果如下 终点站Javascript 开玩笑地测试。测试在应该抛出时失败,javascript,testing,jestjs,Javascript,Testing,Jestjs,所以我有一个带有select方法的类,它接受ID并返回一个承诺。我想用Jest测试它,如果没有向select()传递参数,我希望测试失败 希望你们中的一些人能引导我走上好的道路,这样我就能解决这个问题 预期行为:如果ID未通过,测试将抛出 实际行为:测试失败,结果如下 终点站 Running tests for class DB › SELECT() method tests will follow › Throws if ID is not passed expect(received).r
Running tests for class DB › SELECT() method tests will follow › Throws if ID is not passed
expect(received).resolves.toEqual()
Received promise rejected instead of resolved
Rejected to value: [TypeError: Cannot read property 'id' of undefined]
35 | it("Should resolve if data.id is not passed", () => {
36 | const newDB = new DB();
> 37 | expect(newDB.insert()).resolves.toEqual({});
| ^
38 | });
at expect (node_modules/expect/build/index.js:134:15)
at Object.<anonymous> (05/DB.test.js:37:7)
database.test.js
it("Throws if ID is not passed", async () => {
const dataBase = new DB();
expect.assertions(1);
// return dataBase.select().catch(e => expect(e).toThrow()); <--- doesn't work either
await expect(dataBase.select()).rejects.toThrow('error');
});
it(“未传递ID时抛出”,async()=>{
const dataBase=new DB();
期望.断言(1);
//返回dataBase.select().catch(e=>expect(e).toThrow());哦,对不起。我只是不小心复制了错误的行。我现在已经修复了。我已经从终端更新了日志,所以现在应该是准确的。错误表明问题在另一个测试中,应该解决,如果data.id未通过
。如果id未通过,它很可能是在抛出期间记录的,因为highlig中没有等待hted代码。它应该是wait-expect(newDB.insert()).resolves.toEqual({})
。然后需要调查该测试。insert
未显示。如果问题仍然存在,请隔离问题并提供解决方案。
it("Throws if ID is not passed", async () => {
const dataBase = new DB();
expect.assertions(1);
// return dataBase.select().catch(e => expect(e).toThrow()); <--- doesn't work either
await expect(dataBase.select()).rejects.toThrow('error');
});