Frisbyjs (Automate Rest Api Testing) - 2
Frisby.js API 추가 설명
4개의 그룹이 있다.
-
Expectations
-
Headers
-
Inspectors
-
Helpers
하나씩 살펴보자.
Expectations
- expectStatus( code ) - HTTP Status code 가 code와 같은지 확인한다.
- expectHeader( key, content ) - 헤더에 키벨류가 잇는지 확인한다.
- expectHeaderContains ( key, content ) - 헤더에 키벨류가 있는지 확인
- expectHeaderToMatch( key, patterm ) - 헤더에 패턴 매치되는것이 잇는지 확인
- expectJSON( [path], json ) - json 값이 맞는지 확인
- 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 - 콘솔 화면에 로그를 찍어보는것 ..
- 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' }
- inspectHeaders()
frisby.create('getjoblist')
.addHeader('Authorization','Bearer ' + token)
.get('http://yourapi.com/lists')
.inspectHeaders()
.toss();
- 참고로 console.log() 도 동작한다.
token = 'xxxxxxxx'; console.log(token);
Helpers
- 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/
참고
https://ian_lin.gitbooks.io/javascript-testing/content/chapter6.html