環境
パッケージ
Frisby.js
https://www.npmjs.com/package/frisby
http://frisbyjs.com/
jasmine-node
https://www.npmjs.com/package/jasmine-node
http://jasmine.github.io/
環境構築
$ npm install frisby
$ npm install jasmine-node -g
テスト作成
記述
*spec.js
var frisby = require('frisby');
frisby.create('Title')
// 色々準備して…
.toss();
Frisby.jsメソッド
| メソッド | |
|---|---|
| create(msg) | |
| reset() | opts1.requestが対象 |
| toss(retry) | |
| waits(millis) | |
| retry(count, backoff) | backoffは[ms]。 POSTの場合は無効。 opts1.retry,opts1.retry_backoff |
| responseType(type) | ※用途不明 |
Global setup
| メソッド | |
|---|---|
| globalSetup(opts) |
opts
{
request: {
headers: {},
inspectOnFailure: false,
json: false,
baseUri: '',
// 認証(既定値:undefined)
auth: {
user: '',
password: '',
sendImmediately: false
}
},
// timeout(既定値:undefined)
timeout: 5000,
// retry(既定値:undefined)
retry: 0,
retry_backoff: 1000
};
HTTP Requests
| メソッド | |
|---|---|
| get([uri, params]) | |
| patch([uri, data, params]) | |
| post([uri, data, params]) | |
| put([uri, data, params]) | |
| delete([uri, data, params]) | |
| head([uri, params]) | |
| options([uri, params]) | |
| auth(user, pass, digest) | HTTP Requestメソッドの後に設定。 opts1.auth |
| timeout(t) |
※Multipartについては、httpbin_multipart_spec.jsを参照
Expectations
| メソッド | |
|---|---|
| expectMaxResponseTime(milliseconds) | |
| expectStatus(statusCode) | |
| expectHeader(header, content) | |
| expectHeaderContains(header, content) | |
| expectHeaderToMatch(header, pattern) | |
| expectBodyContains(content) | |
| expectJSONTypes(path, jsonTest) | pathは省略可 |
| expectJSON(path, jsonTest) | pathは省略可 |
| expectJSONLength(expectedLength) | |
| expectJSONSchema(path, jsonSchema) | jsonschemaを使用 |
| not() |
jsonTestにはfunction(val)を指定可(Write Tests参照)
// jsonTestのサンプル
{
// 第1階層のvalueにはfunction(val)を指定可
place: function(val) { expect(val).toMatchOrBeNull("Oklahoma City, OK"); },
user: {
// ※function(val)を指定しても呼び出されない
location: function(val) { expect(val).toEqual("Oklahoma City, OK"); }
}
}
Helpers
| メソッド | |
|---|---|
| after(cb) | 指定した順番でcbが呼び出される |
| afterJSON(cb) | 指定した順番でcbが呼び出される |
| exceptionHandler(fn) | expect2,after3での例外を捕捉 |
Headers
| メソッド | |
|---|---|
| addHeader(header, content) | |
| addHeaders(headers) | |
| removeHeader(key) |
Inspectors
| メソッド | |
|---|---|
| inspectRequest() | |
| inspectResponse() | |
| inspectStatus() | |
| inspectHeaders() | |
| inspectBody() | |
| inspectJSON() |
Response setters
※Matcherテスト用
| メソッド | |
|---|---|
| setResponseJSON(json) | |
| setResponseBody(body) | |
| setResponseHeaders(headers) | |
| setResponseHeader(key, value) |
※戻り値は引数で設定した値
追加のMatcher
- toMatchOrBeNull()
- toMatchOrBeEmpty()
- toBeType()
- toBeTypeOrNull()
- toBeTypeOrUndefined()
- toContainJson()
- toContainJsonTypes()
version 0.8.5
テスト実施
実行
$ jasmine-node .
- ファイル名がspec.jsで終わるファイルが対象
- ファイル名昇順にすべてのspec.jsファイルを実行しテストを作成する(※逐次ではない)
- 作成したテストを順次実行する(toss()メソッドを呼び出した順)
- after()3で作成したテストは--verboseの一覧には表示されない