首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Jest做测试。测试失败时,它应该抛出

用Jest做测试。测试失败时,它应该抛出
EN

Stack Overflow用户
提问于 2020-10-06 17:37:50
回答 1查看 390关注 0票数 0

因此,我有一个带有select方法的类,它接受ID并返回承诺。我想用Jest测试它,如果没有传递给select()的参数,我希望测试失败。

希望你们中的一些人能引导我走上好的道路,这样我就能解决这个问题。

预期行为:如果ID未通过测试抛出

实际行为:测试失败,结果如下

终端

代码语言:javascript
复制
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.js

代码语言:javascript
复制
export default class DB {
constructor() {
    this._rows = [];
}
select(id) {
    return new Promise((resolve, reject) => {
        this.async(() => {
            const [row = null] = this._rows.filter(item => item.id === id);
            if(row) {
                resolve(row);
            } else {
                reject('ID not found');
            }
        });
    });
}

async(callback, ...params) {
    setTimeout(() => {
        callback(...params);
    }, Math.random() * 100);
}}

database.test.js

代码语言:javascript
复制
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');
});
EN

回答 1

Stack Overflow用户

发布于 2022-07-03 09:17:37

导入DB,监视select方法,并模拟其实现。

代码语言:javascript
复制
js
const dataBase = new DB();

jest.spyOn(dataBase, 'select').mockImplementation(() => Promise.reject());

await expect(dataBase.select()).rejects.toThrow('error')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64231064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档