Frisbyjs (Automate Rest Api Testing) - 2

Frisby.js API 추가 설명

4개의 그룹이 있다.

  1. Expectations

  2. Headers

  3. Inspectors

  4. Helpers

하나씩 살펴보자.

Expectations

  1. expectStatus( code ) - HTTP Status code 가 code와 같은지 확인한다.
  2. expectHeader( key, content ) - 헤더에 키벨류가 잇는지 확인한다.
  3. expectHeaderContains ( key, content ) - 헤더에 키벨류가 있는지 확인
  4. expectHeaderToMatch( key, patterm ) - 헤더에 패턴 매치되는것이 잇는지 확인
  5. expectJSON( [path], json ) - json 값이 맞는지 확인
  6. expectJSONTypes( [path], json ) - json 타입이 맞는지….

아래 샘플을 보면 이해가 다 될듯 싶다.

frisby.create('Ensure each tweet has base attributes')
  .get('https://api.twitter.com/1/statuses/user_timeline.json?screen_name=brightbit')
  .expectStatus(200)
  .expectHeaderContains('content-type', 'application/json')
  .expectJSON({
    args: {
      foo: 'bar',
      bar: 'baz'
    }
  })
  .expectJSONTypes('*', {
    id_str: String,
    retweeted: Boolean,
    in_reply_to_screen_name: function(val) { expect(val).toBeTypeOrNull(String); }, // Custom matcher callback
    user: {
      verified: Boolean,
      location: String,
      url: String
    }
  })
.toss();

실제로 코드를 실행하지는 말자…그냥 형태만 예로제 보여준 것.

Headers - http header에 값 추가 삭제

addHeader(header, content) - HTTP header 를 추가하자.

addHeaders(headers)

removeHeader(key) - HTTP header 제거

frisby.create('getjoblist')
    .addHeader('Authorization','Bearer ' + token)
    .get('http://yourapi.com/lists')
    .expectStatus(200)
    .toss();

Inspectors - 콘솔 화면에 로그를 찍어보는것 ..

  1. inspectJSON()
    // Test
    frisby.create('Just a quick inspection of the JSON HTTP response')
      .get('http://httpbin.org/get?foo=bar&bar=baz')
      .inspectJSON()
    .toss()
    // Console output
    { url: 'http://httpbin.org/get?foo=bar&bar=baz',
      headers:
    { 'Content-Length': '',
      'X-Forwarded-Port': '80',
      Connection: 'keep-alive',
      Host: 'httpbin.org',
      Cookie: '',
      'Content-Type': 'application/json' },
      args: { foo: 'bar', bar: 'baz' },
      origin: '127.0.0.1' }
    
  2. inspectHeaders()
frisby.create('getjoblist')
    .addHeader('Authorization','Bearer ' + token)
    .get('http://yourapi.com/lists')
    .inspectHeaders()
    .toss();
  • 참고로 console.log() 도 동작한다.
    token = 'xxxxxxxx';
    console.log(token);
    

Helpers

  1. afterJSON() - 테스트가 끝나고 난후 실행되는 콜백함수 response body 를 자동으로 json으로 변경함.

첫번째 테스트가 끝난후 그 값을 이용해야하는 경우 유용하게 쓰임 예를들면 로그인후 토큰을 가져 와서 다른 테스트를 한다. 이런경우

frisby.create('First test')
  .get('http://httpbin.org/get?foo=bar')
  .afterJSON(function(json) {
    // Now you can use 'json' in additional requests
    frisby.create('Second test, run after first is completed')
      .get('http://httpbin.org/get?bar=' + json.args.foo)
    .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-08-22 00:00

Read more posts by this author