Frisbyjs (Automate Rest Api Testing) - 6

frisbyjs – iis initial loading issue

테스트 사이트에 개발완료된 코드를 넣고 테스트를 해보려고 한다.

문제가 발생했다. 개발 iis이기 때문에 ..그리고 디플로이후 처음 리쿼스트를 요청하는거기 때문에 iis에서 로딩이 상당이 오래 걸린다.

frisbyjs는 기본으로 1초 정도 기다리고 timeout exception 을 내버리는것 같다.

물론 모든 테스트에 .timeout(30000) 를 걸면된다. 테스트가 추가될때마다 적워줘야해서 쓸모없는 짓 같다.

frisbyjs에 디폴트 timeout 을 늘려보려고 이것저것 찾아봣으니 잘 되지 않는다.

그래서 생각한 방법이 처음 테스트만 .timeout(30000) 를 걸면 iis가 로딩될때가지 기다렷다가 테스트를 해주고 다음 테스트부터는 구지 기다리기 않아도됬다.

json nested list

영어가 맞는지는 모르겠지만 다음처럼 생긴 json이 서버에서 넘어온다고 치자.

{
  list: [ 
      { userPayMethodId: 371,
        creditCardNumber: '0027',
        cvv: '123',
        type: 'VISA',
        expDateMonth: '01',
        expDateYear: '2017',
        isdefault: true,
        name: 'brian kim',
        status: true },
      { userPayMethodId: 374,
        creditCardNumber: '7607',
        cvv: '369',
        type: 'Master',
        expDateMonth: '05',
        expDateYear: '2017',
        isdefault: false,
        name: 'brian kim',
        status: true },
      { userPayMethodId: 375,
        creditCardNumber: '7607',
        cvv: '369',
        type: 'Master',
        expDateMonth: '05',
        expDateYear: '2017',
        isdefault: false,
        name: 'brian kim',
        status: true },
      ] 
}

frisbyjs 에서 이걸 읽어다 다음 테스트에서 사용해보려고 한다.

afterJson에서 어떻게 사용해야할지를 몰라서 한참 고민햇는데 의외로 간단햇다.

var value = json.list[0].userPayMethodId;

이제 value를 가져다 쓰면된다.

전체 코드는 다음과 같다.

크레딧카드 정보를 가지고 와서 그중 1번째 카드를 디폴트로 만드는 테스트 이다.


frisby.create('getUserPaymentMethods')
  .addHeader('Authorization', 'Bearer ' + token)
  .get(domain + '/paymentmethods/search?page=1&size=10', {
  })
  .expectStatus(200)
  .afterJSON(function (json){

      //console.log(json);
      //console.log(json.list[0].userPayMethodId);
  
      frisby.create('putUserPaymentMethodsDefault')
      .addHeader('Authorization', 'Bearer ' + token)
      .put(domain + '/paymentmethods/default/'+json.list[0].userPayMethodId, {
      })
      .expectStatus(204)
      .toss();

      frisby.create('postUserInvoiceBuy')
      .addHeader('Authorization', 'Bearer ' + token)
      .post(domain + '/invoices/buy', {
      "product": "BUYCOIN",
      "packageName": "600 Coin - 210 USD",
      "userPayMethodId": 375
      })
      .timeout(15000) // 작업이 오래걸려서500에러가 난다..500이 나면 시간을 늘려줄것.
      .expectStatus(200)
      .toss();
  
  })

.toss();

관련 글

https://teamsmiley.github.io/2016/08/22/frisby-1/

https://teamsmiley.github.io/2016/08/22/frisby-2/

https://teamsmiley.github.io/2016/08/22/frisby-3/

https://teamsmiley.github.io/2016/08/22/frisby-4/

https://teamsmiley.github.io/2016/08/22/frisby-5/

https://teamsmiley.github.io/2016/08/22/frisby-6/

https://teamsmiley.github.io/2016/08/22/frisby-7/

참고

http://frisbyjs.com/docs/api/

https://ian_lin.gitbooks.io/javascript-testing/content/chapter6.html

teamsmiley's profile image

teamsmiley

2016-09-01 00:00

Read more posts by this author