0

我正在使用 Frisby.js 来自动化我的 api。有两个api addUser和delete user,我需要在多个其他api之前使用它们然后删除它。在需要使用两个 api 的情况下,我使用以下块格式。

 describe('Successfully change password', function () {
    //addUser 
    beforeEach(function(done) {
      frisby
        .post(adduser_endpoint, newuser_payload)
        .expect('status',200)
        .done(done)
    })
     it('Enter valid Password to set password', function (done) {
     frisby
        .post(reset_password_endpoint, change_password_payload)
        .expect('status', 200)
        .done(done)
   })
  //delete user
  afterEach(function(done) {
     frisby
        .del(del_user_endpoint)
        .expect('status',200)
        .done(done)
    })


})

这是被多次调用的冗余代码。我试图提取这两个函数以便它可以重用,然后将上面的测试重写如下。但是,这是行不通的。

const addUser = function(done) {
  frisby
    .post(adduser_endpoint, newuser_payload)
    .expect('status',200)
    .done(done)
})
const delete =function(done) {
 frisby
    .del(del_user_endpoint)
    .expect('status',200)
    .done(done)
}

describe('Successfully change password', function () {
//addUser 
beforeEach(addUser())
 it('Enter valid Password to set password', function (done) {
 frisby
    .post(reset_password_endpoint, change_password_payload)
    .expect('status', 200)
    .done(done)
 })
//delete user
 afterEach(delete())
})
4

1 回答 1

0

尝试这个:

beforeEach(addUser())-->beforeEach(addUser)

afterEach(delete())-->afterEach(delete)

您所拥有的是对您定义的函数的调用。你真正传递的是一个未解决的对beforeEachand的承诺afterEach,你想传递一个接受单个参数的函数,完成。

此更改将您的预定义函数addUser以及delete具有正确签名的函数传递给 setup 和 teardown 函数。

于 2018-01-31T04:01:17.113 回答