vlucas / frisby

Frisby is a REST API testing framework built on Jest that makes testing API endpoints easy, fast, and fun.

Home Page:http://frisbyjs.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Iterate through multiple get calls.

bora19 opened this issue · comments

Im trying to iterate through multiple devices and getting the response from each device. But since frisby requires return to work then I cannot use it in a for loop.

Is there any way to loop through multiple devices.

ex. device 123456 gets a response then I grab that response and save it in a text file then I want to continue looping through the rest of the devices and save the response on text file.

basic form:
for (i = 0; i < foo.length; i++) {
return frisby.get(baseUrl + foo[i]+ endPoint)
.then(function (res) {
console.log('HERE');
});
}

The above will only process the 1st iteration due to the required return. Is there a way to bypass it?

use Promise.all().

sample code:

const frisby = require('frisby');

it('issue 559.', () => {
    let f = id => {
      return frisby.get(baseUrl + id + endPoint)
        .then(res => {
          console.log('HERE');
        });
    };
    let p = Array(5);
    for (let i = 0; i < p.length; ++i)
      p[i] = f(i);

    return Promise.all(p);
});

Using promise.all works but I keep getting random error 504 gateway timeouts. It will not complete my test list of 8 items without an error 504. I usually get anywhere from 3-4 results back. Every time I run a different result will come back

Test time may be insufficient.

#515 (comment)