Jest.js 如何在supertest中重复调用API?

wlzqhblo  于 2023-05-15  发布在  Jest
关注(0)|答案(1)|浏览(241)

我想测试create、findById和GetList这三个express API。
我想反复调用create API来测试getlist函数。
但是如果我使用for循环语法,那就会发生TCPWRAP错误。如何在supertest中重复调用API?

test("Make Some Products (10)", (done)=> {
        for(let i=0;i<10;i++) {
            agent
            .post(`/api/product`)
            .send({
                ...productJson,
                title: productJson.title + String(i),
            })
            .expect(200)
            .end((err, res) => {
                if(err) throw err;
                expect(res.body.success).toBeTruthy();
                productIds.push(PRODUCT_ID);
            });
        }
        done();
    });
ybzsozfc

ybzsozfc1#

据我所知,这不是编写测试的正确方法。
1-如果你想测试create函数,那么就不需要循环了。一个电话就够了。
2-如果你想测试getList函数,那么你不应该在填充数据库时使用expect()。你只需要expect()来检查getList的返回值。
3-填充数据库的更好方法是使用jest的beforeEach()中的数据库模块的方法(例如mongoose的model.save())。

beforeEach(() =>{
    // insert records and save their ids in productIds
});

test("getList", (done) =>{
    // test your api using the data inserted above
})

相关问题